C/C++ 文件操作 linux

find -name filename:在当前目录及其子目录中查找名为filename的文件

文件操作API:
open read write close

 

int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
作用:打开或者创建一个文件
参数:
pathname:指定要打开或者创建的文件的路径
flags:指定打开文件的方式
O_RDONLY:以只读的方式打开文件
O_WRONLY: 以只写的方式打开文件
O_RDWR: 以读写的方式打开文件
O_APPEND:默认是以覆盖的方式打开文件,指定该参数之后可以以追加的方式打开文件
O_CREAT:以创建的方式打开文件,如果指定的文件已经存在则会覆盖原来的文件
O_EXCL:判断某个文件是否存在,这个参数只能跟O_CREAT一起使用
mode:如果第二个参数指定了O_CREAT则必须设置该参数。该参数是用来指定用户对创建的文件的操作权限的
返回值:如果函数调用成功,则返回创建或者打开的文件对应的文件描述符

read/write
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count); //void *任意类型指针
作用:将指定的文件中的数据读取到数据缓冲区中
参数:
fd:指定要读取的文件对应的文件描述符
buf:指定将读取到的内容保存到buf指定的数据缓冲区,一般使用数组作为数据缓冲区
count:指定读取的数据的大小。单位为:byte
返回值:函数返回实际读取的文件的内容大小。如果读取文件内容失败,则返回-1

#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count)
作用:将数据缓冲区中的内容写入到文件中
参数:
fd:指定要写入的文件对应的文件描述符
buf:保存要写入文件的内容
count:指定要写入文件的数据的大小
返回值:函数返回实际写入到文件的内容大小。如果写入文件内容失败,则返回-1


#include <unistd.h>

int close(int fd)
作用:关闭打开的文件
参数:fd指定关闭的文件对应的文件描述符

文件内容指针:控制文件中内容的读写位置

 

off_t lseek(int fd, off_t offset, int whence)//#define off_t signed int 
作用:操作文件内容指针的位置
参数:
fd:指定要操作的文件对应的文件描述符
offset:指定相对于参考点whence的偏移量.如果offset为负数,则表示相对参考点往文件头移动;如果offset是正数,则
表示相对参考点往文件尾移动
whence:参考点
SEEK_SET:文件头
SEEK_CUR:文件内容指针当前的位置
SEEK_END:文件尾
返回值:如果调用成功则返回相对于文件头的偏移量,如果调用失败则返回-1

当使用lseek函数操作文件内容指针的偏移量如果超过了文件的大小,并且偏移之后写入了数据,则这些偏移的地方会填充0,
这样形成的效果称为文件内容空洞。

gcc -oname xxx.c 可以指定生成的可执行程序的名字为name表示的名字

posted @ 2021-01-10 09:53  KnowledgePorter  阅读(217)  评论(0)    收藏  举报