6.6.1. Пример работы с псевдотерминалом
6.6.1. Пример работы с псевдотерминалом
Узнать, какое терминальное устройство закреплено за процессом, можно с помощью команды ps. Укажите в опции -о столбец tty, чтобы он был включен в отчет команды. Например, следующая команда отображает идентификаторы процессов, терминалы, на которых они работают, и командные строки их вызова:
% ps -o pid,tty,cmd
PID TTY CMD
28832 pts/4 bash
29287 pts/4 ps -o pid,tty,cmd
В данном случае терминальному окну соответствует псевдотерминал 4.
У каждого псевдотерминала есть запись в каталоге /dev/pts:
% ls -l /dev/pts/4
crw--w---- 1 samuel tty 136, 4 Mar 8 02:56 /dev/pts/4
Обратите внимание на то, что псевдотерминал — это символьное устройство, а его владельцем является владелец процесса, для которого был создан псевдотерминал.
С псевдотерминалом можно обмениваться данными. При чтении перехватываются символы, вводимые с клавиатуры, а при записи данные отображаются в окне терминала.
Попробуйте открыть новое терминальное окно и определить номер псевдотерминала, выполнив команду ps -o pid,tty,cmd. Теперь откройте другое окно и направьте какие-то данные на псевдотерминал. Например, если его номер 7, введите такую команду:
% echo "Hello, other window!" > /dev/pts/7
Заданная строка отобразится в первом окне. Когда терминальное окно будет закрыто, запись 7 исчезнет из каталога /dev/pts.
Если ввести команду ps в терминальном окне, работающем в текстовом режиме, окажется, что ему соответствует обычное терминальное устройство, а не псевдотерминал:
% ps -о pid,tty,cmd
PID TTY CMD
29325 tty1 -bash
29353 tty1 ps -o pid,tty,cmd