目录
一、文件描述符
文件描述符:对于内核而言,所有打开的文件都通过文件描述符引用。文件描述符是一个非负整数:
当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。
当读或写一个文件时,使用open或create返回的文件描述符标识该文件,将其作为参数传送给read或write。
二、文件控制头文件 fcntl.h
POSI标准定义的关于文件控制的头文件
2.1 打开文件函数
函数原型 int open(const char *pathname, int oflag, .../*mode_t mode */);
1、pathname是要打开或创建文件的名字(包括文件路径);
2、oflag参数用来说明此函数的多个选项:
在这三个常量中必须指定且只能指定一个。
O_RDONLY 只读模式
O_WRONLY 只写模式
O_RDWR 读写模式
可选(仅仅列举部分):
O_APPEND 每次写都追加到文件的尾端
O_CREAT 此文件不存在,则创建它。需要第三个参数,mode,用其指定该新文件的访问权限位。
3、mode(访问权限位)
创建文件时使用,用其指定新文件的访问权限位。
4、返回值:open返回的文件描述符一定是最小未用的描述符数值。
2.2 创建文件函数
int create(const char *pathname, mode_t mode);
三、符号常量头文件unistd.h
符号常量定义在<unistd.h> unistd.h是unix std的意思,是POSIX(Portable Operating System Interface可移植的操作系统接口)标准定义的unix类系统定义符号常量的头文件。(推荐阅读Linux的前世今生,了解下什么是unix类系统)。
文件描述符0与标准输入关联 STDIN_FILENO
文件描述符1与标准输入关联 STDOUT_FILENO
文件描述符2与标准出错输出关联STDERR_FILENO
3.1 关闭文件函数
关闭一个文件时还会释放该进程加在该文件上的所有的记录锁。
返回值:成功返回0,出错返回-1
3.2 确定文件偏移量函数
每个打开的文件都有一个与其相关联的“当前文件偏移量”(current file offset)。通常是一个非负整数。通常,读、写操作都从当前文件偏移量处开始,并使偏移量增加所读写的字节数。按系统默认情况下,当打开一个文件时,除非指定O_APPEND,否则该偏移量设置为0。
off_t seek(int filedes, off_t offset, int whence)
对参数的解释与参数whence的值有关。
若whence是SEEK_SET,则将该文件的偏移量设置为距文件开始处offset个字节
若whence是SEEK_CUR,则将该文件的偏移量设置为其当前值加offset,offset可为正或负。
若whence是SEEK_END,则将该文件的偏移量设置为文件长度加offset,offset可为正或负。
若lseek成功执行,则返回新的文件偏移量。