SIGHUP é enviado para este processo órfão e por que não termina?

0

Em A interface de programação do Linux :

SIGHUP is generated when a process group becomes orphaned.

Em um processo bash interativo,

$ ( sleep 123 &)

primeiro forca um subshell, e o subshell então se bifurca para executar sleep 123 & . O subshell sai imediatamente sem esperar que sleep 123 termine devido a & . Naquela época,

  • é o processo sleep órfão? (Acho que sim, Figura 34.3 )

  • o SIGHUP é enviado para o processo sleep porque fica órfão? (Eu acho que é, pela citação)

  • por que o processo sleep não termina porque o SIGHUP é enviado para ele? (Não tenho certeza)

Obrigado.

Eu também tenho uma pergunta semelhante ao criar um processo de daemon primeiro bifurcando um processo filho e, em seguida, o processo filho bifurcando um neto e saindo imediatamente. O neto fica órfão e o SIGHUP não é enviado para ele, fazendo com que ele termine?

    
por Tim 27.11.2018 / 03:41

1 resposta

0

De As especificações de base do grupo aberto Edição 7, edição de 2018 , Interfaces do sistema , sob _exit :

  • If the process is a controlling process, the SIGHUP signal shall be sent to each process in the foreground process group of the controlling terminal belonging to the calling process.

  • If the process is a controlling process, the controlling terminal associated with the session shall be disassociated from the session, allowing it to be acquired by a new controlling process.

  • If the exit of the process causes a process group to become orphaned, and if any member of the newly-orphaned process group is stopped, then a SIGHUP signal followed by a SIGCONT signal shall be sent to each process in the newly-orphaned process group.

    
por 27.11.2018 / 07:26