Как реализовать терминальное приложение, которое «захватывает» терминал? - PullRequest
0 голосов
/ 07 ноября 2019

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

Но, например, когда я набираю $ man ls в терминале, я попадаю в новый контекст, где текст руководства заполняет весь экран, старый прокрутка исчезла,и я могу перемещаться по тексту с помощью клавиш со стрелками. Когда я выхожу, я возвращаюсь в старый контекст.

Как можно достичь чего-то подобного? В частности, меня интересует:

  1. Как очистить терминал во время выполнения программы и впоследствии вернуть предыдущий контент

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

Я понимаю, что это может быть каким-то образом возможно с помощью экранирования ANSIкоды. Меня интересует, как это сделать без помощи библиотеки

...