达者为先 师者之意
Linux 系统编程之文件编程
1 文件描述符(fd)
Linux文件的身份证号码
文件描述符是一个非负的整数,当打开一个文件或创建一个文件时,内核向进程返回一个标识该文件的整数,即fd。
注意,若文件不被创建打开(即没有载入进程),是没有文件描述符可言的。
必需明确一个概念;UNUX中的一切皆是文件。因此对于特殊的文件有特殊的文件描述符。
linux中, 每一个进程在内核中,都对应有一个“打开文件”数组,存放指向文件对象的指针,而 fd 是这个数组的下标。
我们对文件进行操作时,系统调用,将fd传入内核,内核通过fd找到文件,对文件进行操作。既然是数组下标,fd的类型为int,< 0 为非法值,>=0 为合法值。在Linux中,一个进程默认可以打开的文件数为1024个,fd的范围为0~1023。可以通过设置,改变最大值。
在linux中,值为0、1、2的fd,分别代表标准输入、标准输出、标准错误输出。
2 文件的创建(creat)
头文件
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
函数原型
int creat(const char *filename,mode_t mode);
filename:要创建的文件名(包含路径、缺省为当前路径)
mode:创建模式 //可读可写可执行
常见创建模式:
宏表示 数字
S_IXUSR 1 可执行
S_IWUSR 2 可写
S_IRUSR 4 可读
S_IRWXU 7 可读、写、执行
creat函数的返回值
成功:返回文件描述符
出错:返回-1并设置errno