从C中的文件描述符获取文件名

是否可以得到C中的文件描述符(Linux)的文件名?
您可以在/ proc / self / fd / NNN上使用readlink,其中NNN是文件描述符。这将给你打开文件时的名称 – 但是,如果文件被移动或删除自那以后,它可能不再是准确的(虽然Linux可以跟踪重命名在某些情况下)。要验证,stat给出的文件名和fstat你有fd,并确保st_dev和st_ino是相同的。

当然,不是所有的文件描述符都引用文件,对于那些你会看到一些奇怪的文本字符串,如pipe:[1538488]。因为所有的真正的文件名都将是绝对路径,你可以确定哪些是很容易。此外,正如其他人所指出的,文件可以有多个硬链接指向它们 – 这将只报告它打开的一个。如果要查找给定文件的所有名称,则只需遍历整个文件系统。

http://stackoverflow.com/questions/1188757/getting-filename-from-file-descriptor-in-c

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:从C中的文件描述符获取文件名