Изменить: после этого ответа я написал специальную статью в своем блоге для людей, которым было бы интересно узнать более подробную информацию.
После долгого чтения я понял вот что.
Есть ли у ptmx какая-либо цель, кроме выделения подчиненной части? Предоставляет ли он какой-то «интеллект», или эмулируемый терминал (например, xterm) обладает всем интеллектом, чтобы вести себя как терминал?
/ dev / ptmx
не выделяет подчиненную часть : он выделяет «ведущую часть псевдотерминала». / dev / ptmx не является главным псевдотерминалом : это главный мультиплексор псевдотерминала . Он был создан в соответствии со стандартом Unix98 PTY, чтобы избежать состояний гонки при выделении главного псевдотерминала ( источник ).
Мастер-часть (ptm) псевдотерминала не представлена в файловой системе. Он представлен дескриптором файла.
Подчиненная часть (pts) представлена файлом в / dev / pts / N
, где N
- это число.
Очки получаются из ptm через последовательный вызов grandpt
, unlockpt
, ptsname
. ( Источник )
Ptm заменяет драйвер AUR, предназначенный для связи с устройством, и линейную версию. Таким образом, он никоим образом не эмулирует терминал, но предоставляет функции линейной версии и предоставляет способ визуализации и взаимодействия с pts.( Источник )
Вот график того, что было TTY, подключенным к аппаратному устройству
А вот график tty, подключенного к ptm {{1} }
Файл ptm обрабатывает аргументы Ioctl (ISPTM, UNLKPT, TIOCREMOTE, TIOCSIGNAL), отличные от аргументов pts.
Почему xterm должен взаимодействовать с ведущей частью, поскольку он пересылает только stdout и stdin ведомой части? Почему он не может напрямую писать и читать из файла pts?
Процессы взаимодействуют с устройствами посредством действий, выполняемых с виртуальным файлом (чтение, запись, ioctl ..). Самого файла не существует, и драйвер использует файл для запуска действий при вызове методов чтения или записи. (См. Приложение для информации о драйверах)
TTY определяет точный способ взаимодействия с ним. Процессы записывают и читают с устройства и ожидают одинакового поведения независимо от того, какой тип TTY реализован.
точки ведут себя как Драйвер TTY. Его методы чтения и записи используются для реализации поведения драйвера TTY. Поскольку реального устройства для отправки данных нет, создается потоковая пара, и ptm реализует функцию чтения для чтения данных, отправленных pts в поток и функцию записи для отправки данных в поток, которые будут доступны, когда pts прочитают их.
Помните, что файл, представляющий устройство, не является классическим файлом, и если xterm
хочет увидеть, что было записано в файл, он не может просто вызвать его и прочитать, поскольку эти функции здесь совсем другое поведение.
Всегда ли идентификатор сеанса прикреплен к одному файлу pts и наоборот? Могу ли я ввести команду ps и найти 2 идентификатора сеанса для одного и того же / dev / pts / X?
Я так не думаю, идентификатор сеанса определяется первым процессом, который присоединяет pts (обычно bash), а я не вижу возможности создать еще один сеанс и привязать его к тем же точкам. Может быть, такой инструмент, как socat
, сможет это сделать?
Какую еще информацию хранит pts? Обновляет ли Xterm все поля самостоятельно, или ptm добавляет ему "интеллекта"?
Pts хранит 2 категории информации о терминале, с которым он взаимодействует: Terminfo
и Termcap
.
Обычно многие эмуляторы терминала основаны на библиотеке, которая управляет для них информацией termcap (которая предоставляет все значения возможностей, например, для эмуляции VTX100). Примером такой библиотеки является libvte . Изменить (см. Комментарий Стефана Чазеласа): возможности терминала не хранятся в pts.
Просто используйте команду rm
и передайте относительный или абсолютный путь в качестве параметра, например.
$ rm your_file_name.txt
или
$ rm /home/craig/your_file_name.txt
Пожалуйста, используйте команду rm
.
Дополнительную информацию можно найти на справочных страницах -с man rm
.