/proc/self 在 Linux 中是如何实现的?

Vic*_*ani 19 process proc

我正在修改/procLinux 中的文件系统,我遇到了/proc/self,它是指向当前进程的进程目录的符号链接。我想知道它是如何实现的。一种解决方案是在每次上下文切换时更改符号链接,但这显然非常昂贵,因为它涉及磁盘访问。

Dan*_*man 20

http://lxr.linux.no/linux+v3.2.9/fs/proc/base.c#L2482是当前的实现。

proc文件系统是完全虚拟的,并且被实现,因此内部VFSreadlink代表们的特殊符号链接正确的地方。因此,它计算self读取/遍历时指向的内容,而不是每个上下文切换。


Gil*_*il' 13

文件/proc不存储在磁盘上,它们是由内核动态生成的。请参阅当我打开和读取 /proc 时会发生什么?

如果你编程倾斜,您可以阅读的实现/proc内核源代码/proc/self符号链接的内容由一个函数生成,该函数用调用进程的 pid 填充缓冲区。