Как работают интерактивные консольные программы?
Вопрос
Я хочу понять, как такие программы, как vim
или же man
работать в оболочке. Как они позволяют пользователю прокрутить, обновить дисплей и тому подобное?
Кажется, они взаимодействуют с какой -то консольной библиотекой и, следовательно, манипулируют тем, что мы видим. Что на самом деле происходит?
Решение
Терминал имеет то, что называется Драйвер терминала. Анкет Это не драйвер в смысле интерфейса с аппаратным обеспечением, а скорее интерпретирует определенные последовательности символов, которые заставляют его выполнять такие операции, как прокрутка, текстовые атрибуты и так далее.
Последовательности символов хранятся в база данных TermInfo. Анкет Библиотека под названием проклятия (или его современный эквивалент, Ncurses) считывает базу данных TermInfo и издает различные последовательности символов на основе вызванных функций.
Отделение базы данных TermInfo от самого драйвера терминала позволяет программам поддерживать ряд терминалов, таких как XERM, текстовая консоль, сетевые клиенты, даже удаленные тупые терминалы, подключенные через последовательную линию.
Другие советы
Вот отличный способ:
Вы, вероятно, хотите взглянуть на главу 17 - с помощью терминала.