как работают интерактивные консольные программы? - PullRequest
3 голосов
/ 15 ноября 2010

Я хочу понять, как программы типа vim или man работают в оболочке. Как они позволяют пользователю прокручивать, обновлять дисплей и тому подобное?

Кажется, они взаимодействуют с некоторой консольной библиотекой и, следовательно, манипулируют тем, что мы видим. Что на самом деле происходит?

Ответы [ 2 ]

7 голосов
/ 15 ноября 2010

Терминал имеет так называемый драйвер терминала . Это не драйвер в смысле интерфейса к оборудованию, а скорее интерпретация определенных последовательностей символов, которые заставляют его выполнять такие операции, как прокрутка, текстовые атрибуты и т. Д.

Последовательности символов хранятся в базе данных terminfo . Библиотека с именем curses (или ее современный эквивалент ncurses ) считывает базу данных terminfo и генерирует различные последовательности символов на основе вызываемых функций.

Отделение базы данных terminfo от самого драйвера терминала позволяет программам поддерживать ряд терминалов, таких как xterm, текстовая консоль, сетевые клиенты, даже удаленные тупые терминалы, подключенные через последовательную линию.

3 голосов
/ 15 ноября 2010

Вот отличные инструкции:

Возможно, вы захотите взглянуть на главу 17 - Использование терминала.

...