Таким образом, простой способ взаимодействия с терминальным приложением состоит в том, что программа просто выгружает текст в STD и, возможно, также считывает ввод пользователя из STD, но все, что происходит, остается в прокрутке, как и все остальноеделать в терминале ранее.
Но, например, когда я набираю $ man ls
в терминале, я попадаю в новый контекст, где текст руководства заполняет весь экран, старый прокрутка исчезла,и я могу перемещаться по тексту с помощью клавиш со стрелками. Когда я выхожу, я возвращаюсь в старый контекст.
Как можно достичь чего-то подобного? В частности, меня интересует:
Как очистить терминал во время выполнения программы и впоследствии вернуть предыдущий контент
Как я мог перерисоватьсодержание терминала полностью на каком-то программном событии? Т.е. моя программа открывает сокет TCP, и каждый раз, когда она получает полезную нагрузку, весь контент терминала заменяется каким-то произвольным текстом.
Я понимаю, что это может быть каким-то образом возможно с помощью экранирования ANSIкоды. Меня интересует, как это сделать без помощи библиотеки