open()
:打开文件
-
函数原型
// 1、 int open(const char *pathname, int flags); - 功能:打开一个已有文件 - 参数:pathname为文件路径 flags为对文件的操作权限 (O_RDONLY, O_WRONLY, O_RDWR) - 返回值:成功则返回一个新的文件描述符 失败则返回-1 // 2、 int open(const char *pathname, int flags, mode_t mode); - 功能:创建一个新文件 - 参数:pathname为文件路径 flags为对文件的操作权限 (O_RDONLY, O_WRONLY, O_RDWR, O_CREATE) mode为八进制数,表示创建出新的文件的操作权限,比如:0777 最终权限:mode & ~umask,umask的值不同用户不一样,其目的是抹去一些权限 - 返回值: 成功则返回一个新的文件描述符 失败则返回-1
read()
:读数据
- 函数原型
ssize_t read(int fd, void *buf, size_t count); - 功能:读数据,保存到buf内存中 - 参数:fd 文件描述符 buf 读到的数据,存放的地方(传出参数) count 数组的大小 - 返回值: >0 返回读取到的字节数量 =0 表示到了文件末尾,文件读取完 -1 出现了错误
write()
:写数据
-
函数原型
ssize_t write(int fd, const void *buf, size_t count); - 功能:将数据,写入到buf内存中 - 参数:fd 文件描述符 buf 要往磁盘写入的数据 count 要写的数据的实际的大小 - 返回值: >0 返回读取到的字节数量 -1 出现了错误
lseek()
:对文件指针偏移
- 函数原型
off_t lseek(int fd, off_t offset, int whence); - 功能:对文件指针进行偏移 - 参数:fd 文件描述符 offset 偏移量 whence 标志 SEEK_SET 设置文件指针的偏移量,从文件头开始 SEEK_CUR 设置文件指针的偏移量,从当前位置开始 SEEK_END 设置文件指针的偏移量,从文件尾开始,可以获取文件长度 - 返回值:返回文件指针的位置 - 作用: 1、移动文件指针到文件头 2、获取当前文件指针的位置 3、获取文件长度 4、拓展文件长度
dup()
:复制文件描述符
- 函数原型
int dup(int oldfd); - 功能:复制文件描述符 - 参数:oldfd 旧的文件描述符 - 返回值: 成功:返回一个新的文件描述符(从空闲的文件描述符表中找一个最小的),和就的文件描述符指向同一个文件 失败:-1
dup2()
:重定向文件描述符
- 函数原型
int dup2(int oldfd, int newfd); - 功能:重定向文件描述符 - 参数:oldfd 旧的文件描述符 newfd 新的文件描述符 - 返回值: 成功:返回一个新的文件描述符(和newfd一样),都是指向 oldfd 指向的文件 失败:-1
fcntl()
:操作文件描述符
-
函数原型
int fcntl(int fd, int cmd, ...可变参数); - 参数:fd 文件描述符 cmd 表示对文件描述符进行如何操作 按需添加可变参数 - cmd 可选: F_DUPFD : 复制文件描述符,复制fd,得到一个新的文件描述符(不需要可变参数) F_GETFL : 获取指定的文件描述符的文件状态 flag F_SETFL : 设置文件描述符文件状态 flag (需要可变参数) O_RDONLY、O_WRONLY、O_RDWR、O_APPEND、O_NONBLOCK(非阻塞)