来自 /proc/PID/fd/ 中的文件描述符的符号链接的生命周期

Zla*_*tko 3 linux

来自 /proc/PID/fd/ 中的文件描述符的符号链接保留多长时间?

在整个过程的生命周期中?

当这是一个多线程进程时呢?

我是否可以保证在下班后,在某个时间点打开的所有文件都将列在此处?目前,这里的链接都是从 0 到 n 编号,中间没有丢失任何数字。是否会出现数字丢失的情况?或者文件只是在同一点消失,没有任何迹象表明它曾经被打开过?

Tnx。

小智 6

/proc文件系统是虚拟的-它反映了当前状态的流程,/proc/$pid/fd只列出文件的过程中保持开放的现在。如果文件或套接字被关闭,其下的条目将/proc/$pid/fd/自动消失。如果进程退出,整个/proc/$pid目录就会消失。

文件描述符总是从 0 开始,内核总是为新创建的文件描述符分配尽可能低的非负数。然而,一个进程总是可以自由地关闭它拥有的任何文件描述符——所以它完全有可能fd/包含“漏洞”;例如fd/0 fd/1 fd/3 fd/6或类似。

对于多线程进程,/proc/$pid显示主线程的状态——附加线程在其下有子目录/proc/$pid/task/(一个任务代表一个 Pthread)。但是,POSIX.1 要求进程内的所有 Pthread 共享相同的文件描述符,因此其内容fd/将相同。

  • 这个。它们并不真的存在,因为它们在磁盘上。目录读数是由内核在您阅读时即刻制作的。procfs 是一个虚拟文件系统(请原谅滥用该术语)。 (2认同)