В Linux если запустить команду mount без аргументов, то будет выдан список всех смонтированных файловых систем. Одна из строк выглядит вот так:
none on /dev/pts type devpts (rw,gid=5,mode=620)
Она указывает на то что файловая система специального типа devpts смонтирована в каталоге /dev/pts. Эта файловая система не связана ни с каким аппаратным устройством, т.е. является виртуальной файловой системой создаваемой ядром Linux. Каталог /dev/pts содержит ссылки на устройства - псевдотерминалы. Наполнение каталога меняется, динамически отражая состояние работающей системы т.е. Linux создает псевдотерминал для каждого открываемого терминального окна и помещает ссылку на него в каталог /dev/pts. Псевдотерминалы ведут себя аналогично терминальным устройствам: они принимают данные с клавиатуры и отображают текст, передаваемый им программами. Номер псевдотерминала является именем его записи в каталоге /dev/pts. Теперь поясню по подробней :) для того чтобы узнать какое терминальное устройство закреплено за процессом можно узнать с помощью команды ps с опцией -o:
[root@localhost ~]# ps -o pid,tty,cmd pid tty cmd
10011 pts/1 bash
10021 pts/1 ps -o pid,tty,cmd
[root@localhost ~]#
В данном случае моему терминальному окну соответствует псевдотерминал 1 т.е. /dev/pts/1
[root@localhost ~]# ls -l /dev/pts/1
crw--w---- 1 root ..... /dev/pts/1
Обратите внимание на то, что псевдотерминал - это символьное устройство, а его владельцем является владелец процесса, для которого был создан псевдотерминал. С псевдотерминалом можно обмениваться информацией - обычно при чтении символы перехватываются вводимые с клавиатуры, а при записи данные отображаотся на псевдотерминал час все ето поясню :) Попробуйте открыть новое терминальное окно и определите номер псевдотерминала выполнив команду ps -o pid,tty,cmd допустим 2 (/dev/pts/2) теперь перейдите в другое окно и направте какие-нибудь данные на псевдотерминал 2 из 1 (в моем случае):
[root@localhost ~]# echo 'hello wold !!!' > /dev/pts/2
данная строка отабразится в терминальном окне 2. Когда терминальное окно будет закрыто то и запись 2 исчезнет из каталога /dev/pts/ На счет считавания что ввыводится на экран пользователем по сложнее будет но всеже можно перехватить теоритически написав прогу на с или perl типа того:
.... open ( F, '+</dev/pts/1' ); while ( sysread( F, $buf, 1 ) ) { syswrite(F,$buf); } close(F1); ....
т.е. читать надо побайтно, и озадачится тем сколько надо от туда читать.... :) или можно еще отктыть ~/.bash_history если тупо нужны команды пользователя ... :) :)

