
Предположим, что имеется сеанс с несколькими процессами и без управляющего терминала.
Когда лидер сеанса создает соединение с управляющим терминалом,
как другие процессы в том же сеансе узнают, что у сеанса есть управляющий терминал и
как они могли бы также использовать управляющий терминал?
Причина, по которой у меня возник этот вопрос, заключается в следующем. Обычно процесс вызывает setsid()
запуск нового сеанса и становится его лидером, а также вызывает open()
подключение к управляющему терминалу. Затем лидер сеанса переходит к fork()
дочерним процессам, а дети наследуют файловый дескриптор управляющему терминалу.
Затем мне интересно, что делать, если в сеансе уже есть несколько процессов, но нет управляющего терминала, а затем лидер создает соединение с управляющим терминалом, и что тогда делать с другими процессами в сеансе?
Спасибо.
решение1
Любой новый потомок, которого создаст лидер сеанса после того, как он получит управляющий терминал, также будет иметь этот управляющий терминал. Управляющий терминал — это то, что наследуется от родителя.
Другими словами: существующие дети не затронуты.