3.1 引言
大多数U N I X文件I / O只需用到5个函数:o p e n、r e a d、w r i t e、lseek 以及c l o s e。然后说明不同缓存器长度对r e a d和w r i t e函数的影响。
本章所说明的函数经常被称之为不带缓存的I / O(u n b u ffered I/O,与将在第5章中说明的标
准I / O函数相对照)。术语——不带缓存指的是每个 r e a d和w r i t e都调用内核中的一个系统调用。
这些不带缓存的I / O函数不是ANSI C的组成部分,但是是P O S I X . 1和X P G 3的组成部分。
3.2 文件描述符
对于内核而言,所有打开文件都由文件描述符引用。文件描述符是一个非负整数。
当读、写一个文件时,用o p e n或c r e a t返回的文件描述符标识该文件,将其作为参数传送给r e a d或w r i t e。
按照惯例,UNIX shell使文件描述符0与进程的标准输入相结合,文件描述符 1与标准输出
相结合,文件描述符2与标准出错输出相结合。
3.3 函数open
p a t h n a m e是要打开或创建的文件的名字。o f l a g参数可用来说明此函数的多个选择项。用下
列一个或多个常数进行或运算构成o f l a g参数(这些常数定义在< f c n t l . h >头文件中):
• O_RDONLY 只读打开。
• O_WRONLY 只写打开。
• O_RDWR 读、写打开。
等等,具体看书
3.4 Create函数
此函数等效于:
o p e n (p a t h n a m e, O_WRONLY |O _ C R E A T|O_TRUNC, m o d e) ;
在4 . 5节中,我们将详细说明文件存取许可权,并说明如何指定 m o d e。
c r e a t的一个不足之处是它以只写方式打开所创建的文件。在提供 o p e n的新版本之前,如果
要创建一个临时文件,并要先写该文件,然后又读该文件,则必须先调用 c r e a t,c l o s e,然后再
调用o p e n。