对文件的操作是linux/unix里最基本的一种操作,现在举个例子
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(void)
{
int fd;
// fopen(..., "w");
fd = open("./test", O_WRONLY | O_CREAT | O_TRUNC, 0644);
printf("fd = %d\n", fd);
// close(fd);
return 0;
}
============================================================
先用man 2 open看open函数手册
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
为什么有这样两种函数原型呢?因为如果打开的文件不存在的话,就需要创建,而创建出来的文件权限,就是mode
第一个参数,文件路径,第二个参数,标志位,包括可写,可读,可读写,创建等等
这里详解一下上面这段程序里的参数,
O_WRONLY:只读
O_CREAT:如果不存在文件,则创建,如果加该标志,则需要第三个参数,添加权限
O_TRUNC:截短为0,说白了就是每次运行该程序都把原来的文件清空,然后重新写
mode,0644请参考文件权限
最后,返回值,fd
fd是一个文件打开表示符,linux系统默认打开三个文件标识符,分别是0,1,2对应标准输入,标准输出,标准出错
一般来讲新打开的文件表示符号,从3开始,可以用printf打出来查看