从文件描述符查找对应的文件名好像没有什么必要。因为当时打开的时候就是用文件名打开的,文件名还用找嘛?
其实这是对于自己写的代码是这样的,但有的时候你想调试或者跟踪别人的程序使用某一个接口(例如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);
阅读(9579) | 评论(0) | 转发(0) |