ls -l /proc/self | ls -l /proc/self | PID 증가?

ls -l /proc/self | ls -l /proc/self | PID 증가?

명령이 실행될 때 마다 ls -l /proc/self링크가 가리키는 프로세스의 PID가 증가합니다. 왜 그럴까요? 명령의 PID입니까 ls?

답변1

예, PID는 다음과 같습니다 ls.

/프로세스/자기 이 디렉터리는 /proc 파일 시스템에 접근하는 프로세스를 의미하며, 동일한 프로세스의 프로세스 ID로 명명된 /proc 디렉터리와 동일하다.

(에서man 5 proc)

/proc/self/proc/PID파일 시스템의 마법을 통해 링크의 프로세스 PID에 액세스하는 심볼릭 링크입니다 proc.

귀하의 경우 프로세스는 ls이므로 명령을 실행할 때마다 다른 PID를 얻습니다(증가하는 경향이 있음).

답변2

네, PID입니다엘에스.

POSIX는 외부 명령으로 정의되므로 ls실행될 때마다 ls셸은 새 프로세스를 생성하고 ls해당 프로세스에서 실행해야 합니다.

이를 위해 쉘은 다음을 호출합니다.구현하다()시스템 호출:

$ strace ls -l /proc/self
execve("/bin/ls", ["ls", "-l", "/proc/self"], [/* 76 vars */]) = 0

새로운 프로세스가 생성된 후에는 /proc/self해당 프로세스의 컨텍스트에 속하므로 PID가 ls.

관련 정보