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

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

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

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

当这是一个多线程进程时会怎么样?

我能否保证经过几个小时的工作后,所有在某个时间点打开的文件都会列在这里?目前,这里的链接都从 0 到 n 编号,中间没有缺少的数字。会出现缺少数字的情况吗?或者文件只是在同一个点消失,没有任何迹象表明它曾经被打开过?

谢谢。

答案1

文件系统/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/将相同。

相关内容