2

Я изучал псевдо-терминалы в Linux. Мое понимание пары pty заключалось в том, что с главным pty может быть связан один подчиненный pty, дескриптор файла которого мы можем получить из системного вызова ptsname . Но я наткнулся на эту ссылку описания и запутался по поводу возможного количества рабов, которое может иметь хозяин.

Если у master будет более одного подчиненного, как ptsname решит, какой файловый дескриптор должен быть возвращен из всех подключенных подчиненных псевдо-терминалов?

Кроме того, если может существовать более одного ведомого, как мастер будет взаимодействовать с каждым pty? Я имею в виду, если процесс пишет на master fd, он будет отображаться на каждом слейве?

Я также искал страницы справочника, но там ничего не упоминалось, что у мастера может быть больше одного раба или нет. Кроме того, о взаимодействии ввода / вывода между одним ведущим и несколькими ведомыми сценариями.

1 ответ1

1

Если я правильно понимаю описание в ссылке, мастер с несколькими ведомыми устройствами является своего рода непреднамеренной случайностью, и вы можете получить это, только обходя openpty и открывая /dev/pts/* напрямую, потому что следующий /dev/pts/* узлы просто получают одну и ту же главную ссылку внутри.

Я ожидаю, что ptsname вернет первого ведомого, который был выбран при открытии мастера. Было бы интересным экспериментом выяснить, что происходит при записи в мастер с несколькими рабами: пишет ли он только первому (ожидаемому) или всем рабам (неожиданному)?

Я не видел ни одного приложения, где есть мастер с несколькими рабами.

И псевдотерминалы BSD - это всегда пары, поэтому я не думаю, что это было задумано.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .