我们将第三个参数写为. . .,这是ANSI C 说明余下参数的数目和类型可以变化的方法。对于open 函数而言,仅当创建新文件时才使用第三个参数。在函数原型中此参数放置在注释中。pathname是要打开或创建的文件的名字。oflag参数可用来说明此函数的多个选择项。用下列一个或多个常数进行或运算构成oflag参数(这些常数定义在<fcntl.h>头文件中): o O_RDONLY 只读打开。 o O_WRONLY 只写打开。 o O_RDWR 读、写打开。
close函数用于关闭一个打开文件: #include <unistd.h> int close (int filedes); 返回:若成功为0 ,若出错为-1 关闭一个文件时也会释放该进程加在该文件上的所有记录锁。当一个进程终止时,它所有的打开文件都由内核自动关闭。很多程序都使用这一功能而不显式地用close关闭打开的文件。
3.6 lseek 函数
每个打开文件都有一个与其相关联的"当前文件位移量"。它是一个非负整数,用以度量从文件开始处计算的字节数。(本节稍后将对"非负"这一修饰词的某些例外进行说明。)通常,读、写操作都从当前文件位移量处开始,并使位移量增加所读或写的字节数。按系统默认,当打开一个文件时,除非指定O_APPEND选择项,否则该位移量被设置为0。 可以调用l s e e k 显式地定位一个打开文件。 #include <sys/types.h> #include <unistd.h> off_t lseek(int f i l e d e s, off_t o f f s e t, int w h e n c e) ; 返回:若成功为新的文件位移,若出错为-1 对参数offset 的解释与参数w h e n c e 的值有关: o 若whence是SEEK_SET,则将该文件的位移量设置为距文件开始处offset 个字节。 o 若whence是SEEK_CUR,则将该文件的位移量设置为其当前值加offset, offset 可为正或负。 o 若whence是SEEK_END,则将该文件的位移量设置为文件长度加offset, offset 可为正或负。 若lseek成功执行,则返回新的文件位移量,为此可以用下列方式确定一个打开文件的当前位