转自: http://blog.csdn.net/jenghau/article/details/5532265

文件指针/句柄(FILE*)、文件描述符(fd)以及 文件路径(filepath)的相互转换

最近在linux下编程常需要对一些文件进行操作。有时不同的条件下,需要将文件指针/句柄(FILE*)、文件描述符(fd)以及文件路径(filepath)进行相互转换,以满足实际的编程需要。

现简单的做一下整理。如下。

1:文件路径 文件描述符应是唯一的。文件指针(值)不是唯一的,但指向的对象也应该是唯一的。

2: FILE*中包含fd的信息,而且还包含IO缓冲,所以可以理解为FILE*是对fd的封装,是C的标准形式,所以FILE*比fd更适合跨平台,应多用fopen,少用 open。

3:转换

文件路径 到 文件指针:filepath --fopen()-->FILE*;
   文件路径 到 文件描述符:filepath--open()--fd;

文件描述符 到 文件指针:fd--fdopen()-->FILE*;
   文件描述符 到 文件路径:fd--readlink(/proc/%getpid()/fd/%fd"))-->filepath; //这属于“曲线救国”

文件指针 到 文件描述符:FILE*--fileno()--->fd;
   文件指针 到 文件路径:FILE* --- ??? ---PATH;// 这个的直接转换的方法还没有查到。请补充。

最新文章

  1. mysql怎么查询一条记录的前一条记录和后一条记录
  2. Android安全相关文章[不定期更新…]
  3. 走进AngularJs(四)自定义指令----(中)
  4. Linux 中常见的命令行,持续更新
  5. 一些 CSS 框架
  6. Android在程序代码中使用String资源
  7. require.js实现js模块化编程(一)
  8. ubuntu 修改网卡名称 更改设备网卡名称 修改eno16777736为eth0 ubuntu 15.10网卡名称为eno16777736
  9. Android屏幕旋转
  10. Android的Databinding-需要使用控件id,listener以及布局有include的场景
  11. git工具使用包括上传本地代码到服务器
  12. Python3学习笔记20-获取对象信息
  13. Redis简单了解
  14. int main(int argc,char *argv[])与int main(int argc,char **argv)区别?
  15. DevExpress下拉多选框 CheckComboboxEdit、CheckedListBoxControl
  16. 012-MD5Utils工具类模板
  17. Ubuntu16.04LTS安装集成开发工具IDE: CodeBlocks 和Eclipse-cdt
  18. idea设置文件的编码格式
  19. Python之进程、线程、协程
  20. linux yum 安装软件

热门文章

  1. appium+python自动化49-yaml管理定位元素
  2. 对象的当前状态使该操作无效 说明: 执行当前 Web 请求期间,出现未处理的异常。
  3. jquery dialog close icon missing 关闭图片丢失,样式丢失问题
  4. 用 Chrome 扩展实现修改
  5. CCControlExtension/CCControlButton
  6. Servlet拦截静态图片的解决方案
  7. URLRewrite地址重定向的实现
  8. (转)Akka学习笔记
  9. sonatype Nexus3 install on Kubernetes
  10. Python爬虫碎碎念