我在修改/proc
Linux 中的文件系统时,遇到了/proc/self
,它是指向当前进程的进程目录的符号链接。我想知道它是如何实现的。一种解决方案是更改该符号链接每次上下文切换,但这显然非常昂贵,因为它涉及磁盘访问。
答案1
http://lxr.linux.no/linux+v3.2.9/fs/proc/base.c#L2482是当前的实现。
文件系统proc
是完全虚拟的,并且被实现为内部 VFSreadlink
委托给特殊符号链接的正确位置。因此,它计算self
读取/遍历时指向的内容,而不是每次上下文切换。
答案2
文件/proc
不存储在磁盘上,它们是由内核动态生成的。看当我打开并读取 /proc 时会发生什么?
/proc
如果您倾向于编程,您可以阅读中的实现内核源代码。的内容/proc/self
符号链接是由功能用调用进程的 pid 填充缓冲区。