kes*_*ari 5 linux command-line process proc
每次ls -l /proc/self执行命令时,链接指向进程谁的PID不断增加。为什么会这样?它是ls命令的PID吗?
是的,这是 PID ls:
/proc/self 该目录是指访问/proc文件系统的进程,与以同一进程的进程ID命名的/proc目录相同。
(来自man 5 proc)
/proc/self/proc/PID通过proc文件系统的魔力,是访问链接的进程的PID的符号链接。
在您的情况下,该过程是ls,因此每次运行该命令时,您都会得到一个不同的 PID(往往会增加)。
是的,这是ls的PID 。
POSIX 定义ls为外部命令,因此无论何时运行ls,shell 都必须创建新进程并ls在该进程中运行。
为此,shell 将调用execve()系统调用:
$ strace ls -l /proc/self
execve("/bin/ls", ["ls", "-l", "/proc/self"], [/* 76 vars */]) = 0
Run Code Online (Sandbox Code Playgroud)
可以看到,新进程创建后,/proc/self属于该进程的上下文,所以扩展为ls.