各位Linux爱好者:
你好!本人有幸在坊间得到一名为“Linux C 函数参考”的文本文件,并在此基础重新排版并制成html文件以方便广大爱好者阅读,我感到无比的荣幸。在此多谢各位的鼎力支持,以及日益完善此文件,希望有朝一日能成为Linux编程爱好者必备的参考文件。在此再次多谢编写“Linux C 函数参考”的朋友。
声明:本人不拥有文章所有权。本人会对本文件文章内排版出现的错误或遗漏内容以及日后提出的相关请求作出最大限度修改,有问题可e-mail:pennyhot@21cn.com,别炸我的邮箱:-)
PennyHot
2003.06.06
close(关闭文件)
相关函数
open,fcntl,shutdown,unlink,fclose
表头文件
#include<unistd.h>
定义函数
int close(int fd);
函数说明
当使用完文件后若已不再需要则可使用close()关闭该文件,二close()会让数据写回磁盘,并释放该文件所占用的资源。参数fd为先前由open()或creat()所返回的文件描述词。
返回值
若文件顺利关闭则返回0,发生错误时返回-1。
错误代码
EBADF 参数fd 非有效的文件描述词或该文件已关闭。
附加说明
虽然在进程结束时,系统会自动关闭已打开的文件,但仍建议自行关闭文件,并确实检查返回值。
范例
参考open()
creat(建立文件)
相关函数
read,write,fcntl,close,link,stat,umask,unlink,fopen
表头文件
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
定义函数
int creat(const char * pathname, mode_tmode);
函数说明
参数pathname指向欲建立的文件路径字符串。Creat()相当于使用下列的调用方式调用open()
open(const char * pathname ,(O_CREAT|O_WRONLY|O_TRUNC));
错误代码
关于参数mode请参考open()函数。
返回值
creat()会返回新的文件描述词,若有错误发生则会返回-1,并把错误代码设给errno。
EEXIST 参数pathname所指的文件已存在。
EACCESS 参数pathname 所指定的文件不符合所要求测试的权限
EROFS 欲打开写入权限的文件存在于只读文件系统内
EFAULT 参数pathname 指针超出可存取的内存空间
EINVAL 参数mode 不正确。
ENAMETOOLONG 参数pathname太长。
ENOTDIR 参数pathname为一目录
ENOMEM 核心内存不足
ELOOP 参数pathname有过多符号连接问题。
EMFILE 已达到进程可同时打开的文件数上限
ENFILE 已达到系统可同时打开的文件数上限
附加说明
creat()无法建立特别的装置文件,如果需要请使用mknod()。
范例
请参考open()。
dup(复制文件描述词)
相关函数
open,close,fcntl,dup2
表头文件
#include<unistd.h>
定义函数
int dup (int oldfd);
函数说明
dup()用来复制参数oldfd所指的文件描述词,并将它返回。此新的文件描述词和参数 oldfd指的是同一个文件,共享所有的锁定、读写位置和各项权限或旗标。例如,当利用lseek()对某个文件描述词作用时,另一个文件描述词的读写位置也会随着改变。不过,文件描述词之间并不共享close-on-exec旗标。
返回值
当复制成功时,则返回最小及尚未使用的文件描述词。若有错误则返回-1,errno会存放错误代码。错误代码EBADF参数fd非有效的文件描述词,或该文件已关闭。
