相关概念
- 文件IO遵循POSIX(可移植操作系统接口),无缓冲区。优势在于可以访问各种类型的文件,并使用文件描述符表示一个打开的文件。
文件描述符
- 每打开一个文件都有一个对应的文件描述符
- 文件描述符从0开始分配,依次递增
- 文件的IO则通过文件描述符完成
文件IO相关操作
文件的打开
#include <unistd.h>
int open(const char *path,int flags,mode_t mode);
- 成功则返回文件描述符,出错则返回EOF
- 打开已存在的文件则使用2个arguments
- 创建文件时需要3个arguments,最后一个是文件权限
- 设备文件只能打开不能创建
文件的关闭
#include <unistd.h>
int close(int fd);
文件的读写
#include <unistd.h>
ssize_t read(int fd,void *buf,size_t count);
#include <unistd.h>
ssize_t write(int fd,void *buf,size_t count);
读取文件目录
#include <dirent.h>
DIR *opendir(const char *name);
struct dirent *readdir(DIR *dirp);
修改文件的访问权限
#include <sys/stat.h>
int chmod(const char *path,mode_t mode);
int fchmod(int fd , mode_t mode);
获取文件属性
#include <sys/stat.h>
int stat(const char *path,struct stat *buf);
int lstat(const char *path,struct stat *buf);
int fstat(int fd,struct stat *buf);
- 成功返回0,否则返回EOF
- lstat和stat区别:如果path是符号链接文件,则stat()返回目标文件属性,lstat()返回链接文件属性
struct stat{
mode_t st_mode;
uid_t st_uid;
gid_t st_gid;
off_t st_size;
time_t st_mtime;
};
定位文件
#include <unistd.h>
off_t lseek(int fd , off_t offset,int whence);