Estou ciente de que, devido à reutilização de PID em kernels do tipo Unix, os sinais podem ser entregues ao processo errado se forem enviados após o PID já ter sido colhido.
A discussão do que segue provavelmente dependerá necessariamente do kernel específico que estamos discutindo, então estou feliz em reduzir o escopo para Linux. Embora eu receba respostas de especialistas em outros kernels.
Algumas situações a considerar:
Digamos que eu esteja no meio de uma chamada para
kill(2)
um processo zumbi (ou seja, já estou no espaço do kernel e executando o código do kernel para iniciar o sinal). Ao mesmo tempo, o pai do zumbi chamawait(2)
. É possível que minha chamadakill(2)
acabe tentando atuar em um processo diferente?Digamos que eu tenha
kill(2)
feito -ed (ou seja, retornei com sucesso da chamada ao espaço do usuário) um processo, mas antes que meu sinal possa ser entregue, um sinal diferente é capturado e mata o processo. Nesse caso, presumo que é garantido que meu sinal será destruído. Uma linha de raciocínio é: mesmo que o PID seja obtido e um processo diferente com o mesmo PID seja gerado simultaneamente, entregar o sinal ao novo processo pode abrir brechas de permissão.
Obrigado