Você está se perguntando se a verificação de / proc / N é uma maneira segura / confiável de verificar se o PID N está em execução?
Andy Lester
Eu queria saber se, teoricamente, poderia haver resíduo em / proc após o término do processo.
David Dai
Respostas:
25
Se /procé apenas a procmontagem (e ninguém está fazendo truques com sobreposições), não, uma pasta baseada em pid existe apenas enquanto o processo correspondente existir em algum estado (inclusive como um zumbi). De fato, pouco antes de retornar uma entrada de diretório para uma identificação de processo, o kernel re-valida a existência do processo - assim, no instante em que uma entrada de diretório é retornada, o processo correspondente ainda está lá. O acesso a um diretório também começa pesquisando o processo correspondente. (Se os números das linhas mudarem, procure proc_pident_instantiatee proc_pident_lookup.)
Você pode encontrar problemas causados pela listagem /proce uso dos resultados posteriormente (até alguns microssegundos depois): um processo pode estar em execução quando você listar /proce parar antes de agir sobre os resultados.
Respostas:
Se
/proc
é apenas aproc
montagem (e ninguém está fazendo truques com sobreposições), não, uma pasta baseada em pid existe apenas enquanto o processo correspondente existir em algum estado (inclusive como um zumbi). De fato, pouco antes de retornar uma entrada de diretório para uma identificação de processo, o kernel re-valida a existência do processo - assim, no instante em que uma entrada de diretório é retornada, o processo correspondente ainda está lá. O acesso a um diretório também começa pesquisando o processo correspondente. (Se os números das linhas mudarem, procureproc_pident_instantiate
eproc_pident_lookup
.)Você pode encontrar problemas causados pela listagem
/proc
e uso dos resultados posteriormente (até alguns microssegundos depois): um processo pode estar em execução quando você listar/proc
e parar antes de agir sobre os resultados.fonte
wait()
não foram chamados?ps
mostra o processo, seu/proc
diretório deve existir.ps
acessa/proc
para encontrar as informações exibidas.