Linux常用C函数 文件操作篇

发表于:2010-3-22 10:27

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  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非有效的文件描述词,或该文件已关闭。

  dup2(复制文件描述词)

  相关函数  open,close,fcntl,dup
  表头文件  #include<unistd.h>
  定义函数  int dup2(int odlfd,int newfd);
  函数说明  dup2()用来复制参数oldfd所指的文件描述词,并将它拷贝至参数newfd后一块返回。若参数newfd为一已打开的文件描述词,则newfd所指的文件会先被关闭。dup2()所复制的文件描述词,与原来的文件描述词共享各种文件状态,详情可参考dup()。
  返回值  当复制成功时,则返回最小及尚未使用的文件描述词。若有错误则返回-1,errno会存放错误代码。
  附加说明  dup2()相当于调用fcntl(oldfd,F_DUPFD,newfd);请参考fcntl()。
  错误代码  EBADF 参数fd 非有效的文件描述词,或该文件已关闭

41/41234>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号