Chinaunix首页 | 论坛 | 博客
  • 博客访问: 193981
  • 博文数量: 30
  • 博客积分: 1571
  • 博客等级: 上尉
  • 技术积分: 363
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-28 11:42
文章分类

全部博文(30)

文章存档

2012年(6)

2011年(11)

2010年(13)

我的朋友

分类: LINUX

2011-08-16 12:09:58

从文件描述符查找对应的文件名好像没有什么必要。因为当时打开的时候就是用文件名打开的,文件名还用找嘛?
其实这是对于自己写的代码是这样的,但有的时候你想调试或者跟踪别人的程序使用某一个接口(例如pread)读取了哪些文件。有的时候你只有fd,这个时候就有用了。

但好像程序并没有直接的函数可以获取到的,好像通过fstat()获取的st_dev和st_ino可以得到,但是好像很复杂。
http://hi.baidu.com/deep_pro/blog/item/eb9ad0d751b3dddaa044df5f.html
写了一个从/proc文件系统获取的方法。感觉虽然有点不是太好,但只是调试的时候用一下,而且实现起来很简单,代码如下。
    char s[256], name[256];
    snprintf(s, 255, "/proc/%d/fd/%d", getpid(), fd);
    memset(name, 0, sizeof(name));   // readlink在name后面不会加'\0',加上清buf
    readlink(s, name, 255);

阅读(9521) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~