基础IO:
常用头文件 < fcntl.h>
标准库IO接口
c 默认会打开三个输入输出流, 分别是 stdin , stdout, stderr
这三个流的类型都是FILE*, fopen返回值类型,是个文件指针。
FILE* fopen(const char* path, const char* mode);
//path:文件路径名
//mode:
// r 只读 r+ 可读可写
// w 只写文件不存在则创建,若文件存在则清空原有内容
// w+ 多出了可读操作
// a 追加打开,若文件不存在则创建,每次总是写到文件末尾
// a+ 多出了可读指针
// 返回值: 文件的操作句柄 ----- 文件流指针
size_t fwrite(void* ptr, size_t size, size_t nmemb, FILE* stream);
//ptr: 要写入的数据 //size: 要写入的块大小
//nmemb: 块数 // stream: 文件流指针
//返回值写入成功的块个数
int fseek(FILE* stream, long offset, int whence);
// 对stream文件的读写位置跳转到whence位置偏移offset个字节
// whence:跳转的其实位置
// SEEK_SET 文件的起始位置
// SEEK_CUR 当前读写位置
// SEEK_END 文件末尾位置
// offset: 偏移量
// fseek(fp, 0, SEEK_SET) 跳转到文件起始位置
int fread(void* ptr, size_t size, size_t nmemb, FILE* stream);
//ptr:用于接收数据的缓冲区
//size:要读取的块大小
//nmemb:要读取的块个数
//stream:文件流指针
//返回值:实际读取到的块个数 读到文件末尾:0
Linux下系统调用IO接口:int fd;
mode_t umask(mode_t mask);
//当前进程的文件创建权限掩码修改成为 mask
umask(0); //设置umask是000,默认为002
int open(const char* pathname, int flags)
int open(const char* pathname, int flags, mode_t mode)
// 功能:打开文件
// pathname: 指定要打开的文件名称
// flags: 选项参数例如:O_RDONLY 等。
// mode: 权限 mode & umask再取反得实际权限(umask一般默认002)
// 例如输入0777 -> 775(实际权限)
// 返回值:文件描述符(正整数) 失败返回 -1.
//如果有新文件生成必须指定第三个参数,设定权限,否则将出现错误
ssize_t read(int fd, void* buf, size_t count);
//从fd文件中读取count长度的数据,放到buf中。
//count不能大于buf的大小。
//返回值:返回实际读取字节数, 已经读到文件末尾返回 0, 错误返回 -1;
ssize_t write(int fd, const void* buf, size_t count);
// fd: open打开文件所返回的文件描述符
// buf:要写入的数据
// count:要写入的字节数
// 返回值:实际写入的字节数(不一定等于count),失败返回 -1
char* buf = "jintian 9 du ";
ssiz_t ret = write(fd, buf, strlen(buf));
off_t lseek(int fd, off_t offset, int whence);
//跳转fd文件的读写位置到指定处
// whence SEEK_SET SEEK_CUR SEEK_END
// offset: 偏移量