Эмулятор терминала в операционной системе Linux работает в пользовательском пространстве. 1 Его предназначение — доставлять ввод пользователя в запущенную программу и отображать вывод программы на дисплей. 13
Для работы эмулятора используется псевдотерминал (PTY) — программное устройство, которое Linux создаёт по запросам от эмуляторов терминала. 1 Каждому псевдотерминалу в системе динамически генерируется номер и создаётся одноимённый файл в каталоге /dev/pts, например, файл /dev/pts/2 — это файл псевдотерминала под номером 2. 1
Процесс запуска нового терминала выглядит примерно так: 3
- GNOME Terminal Server создаёт master и slave устройства с помощью вызова функции open() на специальном устройстве /dev/ptmx. 3
- GNOME Terminal Server создаёт новый процесс с помощью вызова функции fork(). 3 Этот процесс и будет являться новым терминалом. 3
- В терминале PTS устройство открывается на файловых дескрипторах 0, 1, 2 (stdin, stdout и stderr соответственно). 3 Теперь стандартные потоки ввода/вывода терминала ведут на данное устройство. 3
- В терминале запускается нужная программа с помощью вызова функции exec(). 3 Обычно запускается какой-то Shell (например, Bash). 3 Любая программа, запущенная впоследствии из Bash, будет иметь те же файловые дескрипторы, что и сам Bash, то есть потоки программы будут направлены на PTS устройство. 3
Из графического интерфейса эмулятор терминала можно запустить сочетанием клавиш Alt + T или из меню «Пуск» ‣ «Системные» ‣ «Терминал Fly». 1