文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>fd 和 file 2010.6.3

fd 和 file 2010.6.3

时间:2010-06-03  来源:lixin1986red

   “文件描述符,在linux系统中,设备也是以文件的形式存在,要对该设备进行操作就必须先打开这个文件,打开这个文件就会,就会获得这个文件描述符,它是个很小的正整数,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。文件描述符的优点:兼容POSIX标准,许多Linux和UNIX系统调用都依赖于它。文件描述符的缺点:不能移植到UNIX以外的系统上去,也不直观。 
   文件指针,C语言中使用的是文件指针而不是文件描述符做为I/O的句柄."文件指针(file pointer)"指向进程用户区中的一个被称为FILE结构的数据结构。FILE结构包括一个缓冲区和一个文件描述符值.而文件描述符值是文件描述符表中的一个索引.从某种意义上说文件指针就是句柄的句柄。”
                                       ------摘自某一个论坛        文件指针/句柄(FILE*)、文件描述符(fd)以及 文件路径(filepath)的相互转换    最近在linux下编程常需要对一些文件进行操作。有时不同的条件下,需要将文件指针/句柄(FILE*)、文件描述符(fd)以及文件路径(filepath)进行相互转换,以满足实际的编程需要。      文件路径 到 文件指针:filepath --fopen()-->FILE*;
   文件路径 到 文件描述符:filepath--open()--fd;
   文件描述符 到 文件指针:fd--fdopen()-->FILE*;
   文件描述符 到 文件路径:fd--readlink(/proc/%getpid()/fd/%fd"))-->filepath; //这属于“曲线救国”
   文件指针 到 文件描述符:FILE*--fileno()--->fd;
   文件指针 到 文件路径:FILE* --- ??? ---PATH;// 这个的直接转换的方法还没有查到。请补充。
转自:http://blog.csdn.net/jenghau/archive/2010/04/27/5532265.aspx
 

 

后记:

open系列:Unix/Linux等将一切视为文件的OS的操作一切的方法。在linux中,fd很强势,对于各种设备畅通无阻。但是,可移植性一般。

fopen系列:标准C的支持。有ISO C做背景,傲视群雄。文件操作就靠它了。

linux潮流捧红了open,C的无处不在给了fopen巨大的舞台。但是这两个系列的操作功能基本一致,最烦的是“偶有不同”。希望能够在不久的将来,文件操作大一统。再也不用进行各种转换和烦人的记忆了。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载