저는 프로그램이 어떻게 I/O를 좋아 screen
하고 제어하는지 이해하려고 노력하고 있습니다.script
터미널, tty 등에 대한 나의 지식은 독서에서 비롯됩니다.'티 공개'기사 및 내가 찾을 수 있는 모든 SE 답변. 내가 이해한 바로는 구성 요소 간의 상호 작용은 다음과 같습니다.
Console(Keyboard+Screen) ---- xterm(pty master) ----- tty line discipline ---- bash/other programs(pty slave)
라인 규칙이 커널에 있는 경우 xterm 및 bash는 사용자 공간에서 실행됩니다.
- 맞습니까?
이제 다음과 같은 프로그램에 대해 생각해 보면screen
,script
, 그들은 사용자 공간 프로그램입니다터미널에서 실행(기존 xterm)이지만 다른 프로그램에서 I/O를 제어할 수 있습니다. 기사에서는 xterm 내부에서 또 다른 의사 터미널(기존 의사 터미널)을 실행하고 있기 때문이라고 언급합니다.
이는 새로운 마스터-슬레이브 쌍을 만들고
pty
이 새 쌍의 마스터를 제어하며 여기에서 시작된 모든 프로세스가pty
새 슬레이브에서 실행된다는 의미입니까? 예를 들어, 새로운 "화면"을 시작하고 명령을 실행할 때 마다tty
비슷한 방식으로 실행/dev/pts/x
됩니까 ?script
마지막으로 누군가가 이에 대한 자세한 내용을 얻을 수 있는 기사/책을 알려줄 수 있습니까(아직 찾지 못함)?
저도 참고하고 싶네요이것대답은 짧지만요.
답변1
① 네, xterm과 bash는 사용자 공간에서 실행됩니다. 화면이나 스크립트도 마찬가지입니다.
② 네, 그렇죠. Screen은 기본적으로 XTerm과 마찬가지로 터미널 에뮬레이터입니다. 물론 XTerm은 X11 서버에 명령을 출력하여 터미널을 표시하고 화면은 다른 터미널(터미널 에뮬레이터 또는 실제 터미널일 수 있음)에 제어 시퀀스와 텍스트를 출력합니다.
③ 아마도 이 프로그램이 어떻게 작동하는지에 대한 가장 자세한 내용은 소스 코드일 것입니다. 물론, 여기나 다음 사이트에서 질문하실 수 있습니다.스택 오버플로.