我知道无论何时创建/销毁进程,都会在/ proc中创建一个目录,其中包含与动态更新的进程相关的所有信息。
我想知道内核中的代码行是什么:
1.创建目录(创建进程时)?
2.删除目录(当进程被销毁时)?
我认为这条线要么在" fork.c"或" exec.c"因为它们是负责创建新进程的文件,但我找不到像" proc_create()"这样的函数。或create_proc_entry()。
谢谢!
答案 0 :(得分:0)
动态完成。例如,当您读取/proc
目录时,将枚举正在运行的任务,并且如果它们不存在则动态构造每个进程的条目(请参阅proc_root_readdir => proc_pid_readdir)。
同样,如果您尝试读取或遍历/proc/<PID>
目录,如果它尚未存在则动态创建,并且它所需的条目也是即时创建的。 (参见proc_pid_lookup =&gt; proc_pid_instantiate)。
当一个进程退出时,通常会通过proc_flush_task删除这些条目(尽管由于其他进程持有引用,实际的删除可能会被延迟)。