文件基本操作

1291阅读 0评论2009-07-02 kxiao.tiger
分类:LINUX

一般来说,UNIX文件操作只需要五个最基本功能就可以了,分别是打开文件open、关闭文件close、文件定位lseek、读文件read和写文件write。下面分别详细描述。

1 文件描述符

文件描述符fd是内核中对文件的表示,是一个int类型的整数,打开文件时返回一个文件描述符fd,其他文件操作都需要文件描述符fd指定对应的文件。

UNIX SHELL往往把文件描述符0、1、2分别对应标准输入、标准输出、标准错误,很多程序都用到这个特点从标准输入中读取数据,向标准输出写数据,这样通过I/O重定向就可以重复使用这样的程序。在POSIX标准中,常量STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO分别对应。标准输入、标准输出、标准错误文件描述符。

文件描述符的范围是[0, OPEN_MAX],而其系统保证每次打开新文件时返回的文件描述符是可能的最小值,这样进程就可以先关闭标准输入输出,然后打开新文件,从而实现标准输入输出重定向。

2 打开文件open(2)

#include
int open(const char *pathname, int oflag, ... /* mode_t mode */ );
Returns: file descriptor if OK, -1 on error

open(2)打开文件,如果成功返回文件描述符,失败返回-1。第一个参数pathname是文件的路径,第二个参数oflag是文件打开参数,第三个参数mode是可选的,在创建文件的时候使用,是文件的权限。

参数oflag是文件打开参数,可以用多个常量通过或操作组合。
下面是三个必选的参数:
这三个参数必须且只能选择一个。
下面是可选的参数:

#include
int creat(const char *pathname, mode_t mode);
Returns: file descriptor opened for write-only if OK, -1 on error

create(2)创建一个文件,参数mode指定文件权限,等同于open(pathname, O_WRONLY | O_CREAT | O_TRUNC, mode)。可以看出,create(2)返回的文件描述符对应文件以只写模式打开,不能读文件。在有些情况,如生成临时文件时,需要创建文件并对其读写,这时用open(pathname, O_RDWR | O_CREAT | O_TRUNC, mode)更好。

创建文件时,如果文件名长度大于NAME_MAX,文件名会被自动截断或产生错误。

3 关闭文件


4 文件定位


5 读写文件


上一篇:UNIX文件专辑
下一篇:UTC GMT CST时间