ls -l / proc / self | PID incremental?

5

Sempre que o comando ls -l /proc/self é executado, o link aponta para o processo de quem o PID continua aumentando. Porque isto é assim ? É o PID do comando ls ?

    
por kesari 22.01.2015 / 07:01

2 respostas

6

Sim, esse é o PID de ls .

POSIX definiu ls como um comando externo, portanto, sempre que você executar ls , o shell deverá criar um novo processo e executar ls nesse processo.

Para fazer isso, o shell chamará a chamada de sistema execve () :

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

Você pode ver, depois que o novo processo foi criado, /proc/self pertence ao contexto desse processo, portanto, ele foi expandido para o PID de ls .

    
por 22.01.2015 / 08:05
7

Sim, é o PID de ls :

/proc/self This directory refers to the process accessing the /proc file system, and is identical to the /proc directory named by the process ID of the same process.

(de man 5 proc )

/proc/self é um link simbólico para /proc/PID para o PID do processo que acessa o link, pela mágica do sistema de arquivos proc .

No seu caso, esse processo é ls , e cada vez que você executar o comando, você obtém um PID diferente (que tende a aumentar).

    
por 22.01.2015 / 07:09