Quando um líder de sessão adquire um terminal de controle, como os outros processos existentes na sessão também adquirem o terminal de controle?

0

Suponha que haja uma sessão com vários processos nela e sem um terminal de controle.

Quando o líder da sessão cria uma conexão com um terminal de controle,

  • como os outros processos na mesma sessão aprenderiam que a sessão tem um terminal de controle e

  • como eles também poderiam fazer uso do terminal de controle?

A razão pela qual eu tenho essa pergunta é a seguinte. Normalmente, um processo chama setsid() para iniciar uma nova sessão e se tornar seu líder, e chama open() para se conectar a um terminal de controle. Em seguida, o líder da sessão prossegue para fork() processos filhos, e os filhos herdarão o descritor de arquivo para o terminal de controle.

Pergunto-me então se uma sessão já tem múltiplos processos e não tem terminal de controle, e então o líder cria uma conexão com um terminal de controle e, em seguida, sobre os outros processos na sessão.

Obrigado.

    
por Tim 29.05.2018 / 18:06

1 resposta

0

Qualquer novo filho criado pelo líder da sessão após ter adquirido um terminal de controle também terá esse terminal de controle. Um terminal de controle é algo que é herdado do pai.

Em outras palavras: as crianças existentes não são afetadas.

    
por 29.05.2018 / 18:20