从C中的文件描述符中检索文件名

是否有可能在C中获取文件描述符(Linux)的文件名?
最佳答案
您可以在/ proc / self / fd / NNN上使用readlink,其中NNN是文件描述符.这将为您提供文件的名称,就像它打开时一样 – 但是,如果从那时起移动或删除文件,它可能不再准确(尽管Linux可以在某些情况下跟踪重命名).要验证,请确定给定的文件名和fstat您拥有的fd,并确保st_dev和st_ino相同.

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

转载注明原文:从C中的文件描述符中检索文件名 - 代码日志