您可以使用
readlink在
/proc/self/fd/NNN其中NNN是文件描述符。这将为您提供文件打开时的名称-
但是,如果此后文件被移动或删除,它可能不再准确(尽管Linux在某些情况下可以跟踪重命名)。要进行验证,
stat请提供给定的文件名和
fstatfd,并确保
st_dev和
st_ino相同。
当然,并非所有文件描述符都引用文件,对于那些文件描述符,您会看到一些奇怪的文本字符串,例如
pipe:[1538488]。由于所有真实文件名都是绝对路径,因此您可以轻松确定其中的哪个。此外,正如其他人指出的那样,文件可以具有指向它们的多个硬链接-
这只会报告打开文件的那个。如果要查找给定文件的所有名称,则只需遍历整个文件系统。



