




















一个程序同时打开的文件数是有限的(通常为20)。相应地,如果一个程序需要同时处理许多很久,那么他必须重用文件描述符。函数close(int fd)用来断开文件描述符和已经打开的文件之间的连接,并释放此文件描述符,以供其他文件使用。close函数与标准函数库中的fclose函数相对应,但它不需要清洗(flush)缓冲区。如果程序通过exit函数退出或从主程序中返回,所有打开的文件将被关闭。
int open(char *name, int flags, int perms)
与fopen一样,参数name是一个包含文件名的字符串。第二个参数flags是一个int类型的值,它说明以何种方式打开文件,主要的几个值如下所示:
O_RDONLY 以只读方式打开文件
O_WRONLY 以只写方式打开文件
O_RDWR 以读写方式打开文件
在System V UNIX系统中,这些常量在头文件<fcntl.h>中定义,而在Berkeley(BSD)版本中则在<sys/file.h>中定义。
可以使用下列语句打开一个文件以执行读操作:
fd = open(name, O_RDONLY, 0);
在本章的讨论中,open的参数perms的值始终为0.
如果用open打开一个不存在的文件,则将导致错误。可以使用create系统调用创建新文件或覆盖已有的旧文件,如下所示:
int create(char *name, int perms);
fd = create(name, perms);
如果create成功的创建了文件,它将返回一个文件描述符,否则返回-1。如果此文件已存在,create将把该文件的长度截断为0,从而丢弃原先已有的内容。使用create创建一个已存在的文件不会导致错误。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。