일부 프로그램(예: vim/nano/nload)은 전체 터미널을 사용하여 내용을 표시할 수 있으며 종료 시 이전 터미널 출력이 복원됩니다. 이 복구 프로세스를 어떻게 구현합니까?
답변1
이 복구 프로세스를 어떻게 구현합니까?
그들은 그렇게 하지 않았습니다. 이는 구현 범위를 벗어납니다.
이것은 ... 불리운다대체 화면 버퍼스위치 인/아웃 중입니다. 터미널(또는 터미널 에뮬레이터 프로그램) 자체에서 구현됩니다. 터미널은 이러한 TUI 프로그램에서 발행한 제어 시퀀스에 응답합니다. TUI 프로그램 제어언제이런 일이 발생하지만 구현은무엇일어난 일은 전적으로 터미널 내부에서 일어났습니다. 실제로 TUI 프로그램에는 진행 상황에 대한 동일한 모델조차 없습니다. 이들의 경우 "커서 주소 지정 모드"를 켜고 끕니다.
모든 터미널과 터미널 에뮬레이션 프로그램에 대체 화면 버퍼가 있는 것은 아닙니다. 예를 들어, 커널 가상 터미널을 제공하는 Linux 및 BSD 커널에 내장된 터미널 에뮬레이터 프로그램에는 일반적으로 이 기능이 없습니다.
이러한 터미널에는 제어 시퀀스가 없습니다. 따라서 터미널 유형에 대한 termcap/terminfo 데이터베이스 레코드에는 "커서 주소 지정 모드"로의 전환과 현재 화면 내용을 덮어쓰는 제어 순서가 없습니다.아니요저장하고 복원하세요.
vim, 나노 등그것에 대해 아무것도 몰라. 그들은 다른 일을 하지 않았습니다. 그들은 그 기능을 수행하는 것이 아닙니다. 그들은 단지 "커서 주소 지정 모드"에 들어가고 나갈 것임을 알려주는 termcap/terminfo 제어 시퀀스를 발행합니다. 이 메커니즘을 사용하는 일부 터미널의 경우 "커서 주소 지정 모드"는 다음을 의미합니다.대체 화면 버퍼 사용. 일부에게는 아직 그렇지 않습니다.