Когда лидер сеанса получает управляющий терминал, как другие существующие процессы в сеансе также получат управляющий терминал?

Когда лидер сеанса получает управляющий терминал, как другие существующие процессы в сеансе также получат управляющий терминал?

Предположим, что имеется сеанс с несколькими процессами и без управляющего терминала.

Когда лидер сеанса создает соединение с управляющим терминалом,

  • как другие процессы в том же сеансе узнают, что у сеанса есть управляющий терминал и

  • как они могли бы также использовать управляющий терминал?

Причина, по которой у меня возник этот вопрос, заключается в следующем. Обычно процесс вызывает setsid()запуск нового сеанса и становится его лидером, а также вызывает open()подключение к управляющему терминалу. Затем лидер сеанса переходит к fork()дочерним процессам, а дети наследуют файловый дескриптор управляющему терминалу.

Затем мне интересно, что делать, если в сеансе уже есть несколько процессов, но нет управляющего терминала, а затем лидер создает соединение с управляющим терминалом, и что тогда делать с другими процессами в сеансе?

Спасибо.

решение1

Любой новый потомок, которого создаст лидер сеанса после того, как он получит управляющий терминал, также будет иметь этот управляющий терминал. Управляющий терминал — это то, что наследуется от родителя.

Другими словами: существующие дети не затронуты.

Связанный контент