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

是否可以在 C 中获取文件描述符 (Linux) 的文件名?

最佳答案

您可以使用 readlink/proc/self/fd/NNN 上,NNN 是文件描述符。这将为您提供文件打开时的名称——但是,如果文件从那时起被移动或删除,它可能不再准确(尽管 Linux 在某些情况下可以跟踪重命名)。要验证,stat 给定的文件名和 fstat 您拥有的 fd,并确保 st_devst_ino 是一样。

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

https://stackoverflow.com/questions/1188757/

相关文章:

python - Python 中嵌套的 try/except block 是一种好的编程习惯吗?

python - Python 'for' 循环中的范围

python - Python 3 的图像库

linux - 是否可以在文件名中使用 "/"?

linux - POSIX 异步 I/O (AIO) 的现状如何?

python - 是否可以使用 scikit-learn K-Means Clustering 指定

linux - grep 排除多个字符串

python - 如何将 NumPy 数组标准化为单位向量?

c - 如何从 C 中通过 PID 在 Linux 中计算进程的 CPU 使用率?

linux - 如何在行号处拆分文件