Em sistemas do tipo UNIX, um "processo órfão" é um processo cujo processo pai terminou de executar (encerrado ou saiu), mas o processo filho continua sendo executado. O ID do processo do processo pai (PID) ainda está registrado em algum lugar, mas o próprio processo pai não existe mais.
Aqui está um colapso:
*
Terminação normal do processo: Normalmente, quando um processo pai termina, ele aguarda o término de seus processos filhos. Essa espera é gerenciada usando chamadas do sistema como `wait ()` ou `waitpid ()`. O processo pai limpa os recursos associados a seus filhos.
* processo órfão: Se o processo dos pais termina * sem * aguardar seus processos infantis, esses processos infantis se tornarão órfãos. Eles ainda estão correndo, mas seus pais se foram.
*
adoção por init: O ponto crucial é que os processos órfãos não são simplesmente excluídos. Em vez disso, o processo init (PID 1, o primeiro processo iniciado durante o processo de inicialização) os adota. `init` (ou` Systemd` em muitos sistemas modernos) se torna seu novo processo pai. Isso garante que os processos órfãos ainda sejam gerenciados adequadamente e, eventualmente, encerram quando terminam seu trabalho. Essencialmente, o sistema operacional impede que os processos órfãos se tornem processos "desonestos".
*
implicações: Embora a adoção por `init 'impeça questões importantes, pode haver efeitos sutis, dependendo das especificidades:
*
Limpeza de recursos: O processo pai original pode ter sido responsável pela limpeza de certos recursos alocados ao processo filho. Como o pai se foi, essa limpeza pode não acontecer perfeitamente, levando potencialmente a pequenos vazamentos de recursos (embora eles geralmente sejam bem gerenciados pelo sistema operacional).
* Manuseio de sinal
: A maneira como os sinais são tratados pode ser ligeiramente alterada, pois o pai não está mais presente para interceptar ou lidar com eles.
Em suma, o termo "estado órfão" descreve a situação em que um processo perdeu seus pais, mas continua sendo executado, sendo adotado e gerenciado pelo processo `init` (ou` systemd`). Geralmente não é motivo de preocupação significativa, pois o sistema lida com isso graciosamente, mas entender o conceito é importante para a administração do sistema e o gerenciamento de processos.