C语言地标准输入输出库中的库函数,如fopen,fclose,fread,fwrite等,提供的是高层服务;而Linux的文件I/O调用提供的是底层服务,底层的服务不提供缓冲而直接进入操作系统。标准输入输出库中的高层服务归根到底还是调用Linux所提供的底层服务。
在Linux上对所有设备和文件的操作都使用文件描述符来进行。文件描述符是一个非负的整数,表示为int类型的对象,它是一个索引值,并指向内核中每个进程打开文件的记录表。当打开一个现存或创建一个新文件时,内核就向进程返回一个文件描述符。当需要读写文件时,也需要把文件描述符作为参数传递给相应的函数。
下面给出需要操作文件描述符的几个函数,用于基本文件的I/O操作。普通文件的基本输入输出操作,如建立文件(create)、打开文件(open)、文件的写操作(write)、文件的读操作(read)、关闭一个打开的文件(close)、设置文件读写指针位置(lseek)等。
- open函数
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
ing open(const char *pathname,flags,.../*mode_t mode */);
第三个参数写为“…”,ISO C用这种方法表明余下参数及其类型根据具体的调用会有所不同。对于open函数而言,仅当创建新文件时才使用第三个参数。
open函数打开一个文件并返回一个文件描述符。pathname是打开(或要创建)的文件名或含路径的文件名。flags是标志打开的方式,O_RDONLY表示请求以只读方式打开文件,O_WRONLY表示请求以只写的方式打开文件,O_RDWR表示可读写的方式打开文件。对于一个已经存在的文件,在打开它时还要注意它的存取权限。
调用实现:
int fa;
fd=open("/home/test/file1",O_RDWR|O_CREAT|O_TRUNC,mode);
- close函数
close函数用来关闭不再使用的文件,close函数的格式如下: