ncurses를 사용하여 bash 이스케이프 시퀀스 및 기타 문자 해석

ncurses를 사용하여 bash 이스케이프 시퀀스 및 기타 문자 해석

나는 그런 터미널 멀티플렉서를 설계하고 싶었지만 tmux그렇게 복잡하지는 않고 원격으로 작동할 수 있는 가장 작은 것을 ncurses.

서버 측의 워크플로는 다음과 같습니다.

  • 서버 프로세스는 총 2개의 프로세스를 생성합니다. 첫 번째 프로세스는 fork상위 프로세스에서 가져오고 forkpty두 번째 프로세스는 상위 프로세스에서 가져옵니다. forkptyed 프로세스는 bash 쉘이 됩니다 execl. 첫 번째 프로세스는 호출에서 반환된 설명자를 사용하여 두 번째 프로세스와 통신합니다 forkpty(). 첫 번째 프로세스도 클라이언트와 통신합니다. 마치 중개인과 같습니다. 이는 클라이언트의 정보를 forkpty교육 프로세스로 전달하거나 그 반대의 경우도 마찬가지입니다.

클라이언트 측의 워크플로는 다음과 같습니다.

  • 클라이언트는 서버와의 통신을 담당하는 스레드를 생성합니다. 내부 스레드가 실행됩니다 ncurses.

문제는 ncursesbash나 기타 특수 문자의 이스케이프 시퀀스를 구문 분석하지 않는다는 것입니다. 두 개의 스크린샷을 찍었습니다(클라이언트 측에서 찍은 것입니다). 첫 번째에서는 서버에서 받은 정보(셸에서 실행된 명령의 출력)가 write()시스템 호출을 사용하여 표준 출력에 표시됩니다. 두 번째 스크린샷에는 stdscr기능 사용에 대한 정보가 표시됩니다 printw. 이것이 두 스크린샷 사이의 코드상의 유일한 차이점입니다.

printw터미널을 여러 창으로 분할하고 싶기 때문에 해당 기능이 필요합니다 . ncurses이러한 시퀀스(및 특수 문자)를 어떻게 쉽게 해석할 수 있나요 ? 스크린샷을 찾을 수 있습니다여기.

tmux추신: 저는 아직 소스 코드를 완전히 또는 부분적으로 이해하는 수준이 아닙니다.

관련 정보