xterm
не выполняет ввод с оболочкой и утилитами через pipe(7)
s.Вместо этого он использует платформу Unix PTY (для получения дополнительной информации см. Справочные страницы pty(7)
, openpty(3)
, forkpty(3)
, posix_openpt(3)
, pts(4)
).Инфраструктура PTY позволяет любому процессу выступать в роли «главного» терминала (например, telnetd(8)
, sshd(8)
, xterm(1)
и т. Д.), И любой процесс может подключаться к подчиненному терминалу, чтобы обеспечить интерактивную среду, как если бы он находился вконсоль.
Расширенное программирование в среде Unix, 2-е издание книга Стивенса и Раго содержит отличную главу об использовании псевдо-терминальных устройств для управления подчиненными программами.- включая отличную небольшую pty
программу, которая позволяет управлять "интерактивными" программами способом, подобным expect(1)
, но на C, а не tcl
.