Obtendo o ID do processo pai do processo filho

0

Eu li que apenas o pai obtém o ID do processo do filho após a execução do comando fork e não podemos acessar o ID do processo do pai do filho, para conseguir isso precisamos usar pipes para transferir o ID do processo de pai para filho. / p>

Minha dúvida é que não podemos usar diretamente o getppid () no processo filho para obter o ID do processo pai? Por que não vai funcionar

    
por Zephyr 05.09.2017 / 06:59

2 respostas

2

Sua premissa é falsa. Um processo sempre pode obter o ID do processo de seu pai chamando getppid . getppid é uma das raras chamadas de sistema que não podem falhar. Mesmo se o processo pai original do processo tiver morrido, o filho será adotado pelo init, portanto getppid retornará 1.

Um processo não pode encontrar os PIDs de seus filhos, ou o PID de seu avô, ou os PIDs de seus irmãos, etc. Para ser preciso, ele pode descobrir, mas apenas chamando ps ou algum equivalente método como coletar informações de /proc , ou seja, os mesmos métodos que qualquer processo não relacionado pode usar.

    
por 06.09.2017 / 01:28
1

No Linux, você pode simplesmente verificar as informações de processo do kernel:

grep ^PPid: /proc/12345/status

em que 12345 é o PID da criança.

Para encontrar o pai de um shell

grep ^PPid: /proc/$$/status
    
por 05.09.2017 / 07:19

Tags