É possível alterar o processo pai de um processo? Se sim, como?
Por exemplo,
como
screenconsegue anexar umascreensessão e os processos em execução a diferentes processos de shell? Existe mudança no processo pai?Parece que ouvi outras maneiras de alterar o processo do shell em que um programa está sendo executado, mas não me lembro. Também há alteração no processo pai do programa?
Eu pensei que
disownum processo altera o processo pai do processo, simplesmente porque o nomedisownimplica isso. Mas descobri que não é verdade.O cliente Emacs pode se conectar ao servidor emacs em uma guia de terminal diferente. Existe mudança no processo pai?
getppid(2), uma chamada do sistema e chamadas do sistema são tratadas pelo kernel. Um programa pode ser confundido emitindo essa chamada, salvando o valor e, em seguida, usando esse valor após a alteração de seus pais. Há uma chance de uma condição de corrida aqui.
disownapenas remove um determinado filho da lista interna de processos filhos de um shell. O PPID da criança permanece o da concha. O shell esqueceu que alguma vez iniciou esse filho, mas o kernel se lembra.