Quem envia SIGHUP para o processo de controle do pseudoterminal quando o emulador de terminal termina?

0

Quando um terminal é desconectado, o kernel do sistema operacional envia SIGHUP para o processo de controle do terminal.

Quando um emulador de terminal termina, quem envia SIGHUP para o processo de controle do pseudoterminal subjacente ao emulador de terminal: o kernel do SO ou o emulador de terminal?

Obrigado.

    
por Tim 27.05.2018 / 05:10

1 resposta

3

A resposta já está contida na sua pergunta. Quando um terminal é desconectado, o kernel envia SIGHUP para o processo de controle do terminal¹. Para um terminal criado por um driver no kernel, o terminal é desconectado quando o driver diz isso. Para um terminal pseudo-terminal, o terminal é desconectado quando o identificador do arquivo para o lado mestre do terminal é fechado (seja porque o processo do emulador de terminal o fechou explicitamente ou porque o processo do emulador de terminal morreu) ³.

¹ O processo de controle é o processo executado primeiro no terminal - mais precisamente, é o primeiro processo que abriu o terminal enquanto era líder de sessão ou tornou-se um líder de sessão ao ter o terminal aberto, se esse processo ainda é um líder de sessão.
² O lado mestre é o lado do emulador. O lado escravo é o lado do aplicativo em execução no terminal.
³ Se mais de um processo tiver o lado mestre do terminal aberto, todos eles devem fechar seus descritores de arquivo (possivelmente morrendo), para que o descritor de arquivo seja fechado.

    
por 27.05.2018 / 12:30