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.
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.
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.