第六章文件操作总结
首先 看书学到的一个字节觉得特别有用的找bug的方法
c
/自定义的错误处理函数/
void my_err(const char * err_string, int line)
{
fprintf(stderr,”line: %d”, line);
//调用是这样,my_err(“err_string”,LINE); LINE为预编译器内置宏获取行号
perror(err_string);
exit(1);
}
“`
打开文件
函数功能: 打开文件并返回文件描述符,其他功能视参数而定。
函数原型及解释
int open(const char *path, int oflag, …);
//一般使用的两种形式:
int open(const char *path, int oflag);
int open(const char *path, int oflag, mode_t mode);
1. path:要打开的文件位置,既可以是绝对路径也可以是相对路径。
2. oflag:打开文件的方式
3. mode:当且仅当oflag设置了O_CREAT时有效,要创建的文件的权限。
4. 返回值:若执行成功则返回该文件描述符,失败则返回-1。
参数
其中参数oflag可选项有:
选项(以下五选一) | :说明 |
---|---|
O_RDONLY | 只读打开 |
O_WRONLY | 只写打开 |
O_RDWR | 读写打开 |
O_EXEC | 只执行打开 |
O_SEARCH只搜索打开 | 只搜索打开 |
以上是互斥的也就是只能出现一种
如下可以与上边根据需求自己搭配
选项(以下任选) | 说明 |
---|---|
O_APPEND | 每次写文件时都追加到文件的尾部 |
O_CLOEXEC | 将FD_CLOEXEC设置为文件描述符标志 |
O_CREAT | 若该文件不存在则创建 |
O_EXCL (指定了O_CREAT) | 若文件已存在则报错 |
O_NOFOLLOW | 若文件是一个符号链接则报错 |
O_SYNC | 对文件的修改将阻塞直到物理磁盘上同步为止 |
O_DIRECTORY | 若文件不是一个目录则失败 |
O_NONBLOCK | 以非阻塞的方式打开文件 |
O_NDELAY | 以非阻塞方式打开文件 |
O_TRUNC | 当文件存在并以可写方式打开则截断文件至0 |
创建文件
函数功能:创建一个文件。
函数原型及解释
int creat(const char *path, mode_t mode);
1. path:要创建的文件名,这里可以使用绝对路径也可以使用相对路径。
2. mode:要创建的文件的权限、类型。
3. 返回值:若执行成功则返回该文件描述符,失败则返回-1。
关闭文件
函数功能:关闭文件描述符,同时将释放进程施加在该文件上的所有记录锁。
函数原型及解释
int close(int fildes);
1.返回值:若执行成功则返回0,失败则返回-1。
2.fildes:要关闭的文件描述符。这里要解释一下fildes这个东西
是文件描述符 0代表标准输入文件 1代表标准输出文件 2代表标准错误输出文件其次用户可以不必调用close来关闭一个已经打开的文件,因为在进程结束时,内核会自动关闭所有已打开的文件
这样子感觉越写越水就不写那些网上一查后即可已找到的东西了
以后就主要说说自己使用函数时遇到的那些坑点吧