
Suponha que haja uma sessão com vários processos 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 tenho esta 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 passa para fork()
os processos filhos, e os filhos herdarão o descritor de arquivo do terminal de controle.
Eu então me pergunto: e se uma sessão já tiver vários processos e não tiver nenhum terminal de controle, e então o líder criar uma conexão com um terminal de controle, e então os outros processos na sessão.
Obrigado.
Responder1
Qualquer novo filho criado pelo líder da sessão após adquirir um terminal de controle também terá esse terminal de controle. Um terminal de controle é algo herdado do pai.
Em outras palavras: as crianças existentes não são afetadas.