터미널 에뮬레이터 창을 닫을 때 슬레이브 또는 마스터의 마지막 파일 설명자가 닫히나요?

터미널 에뮬레이터 창을 닫을 때 슬레이브 또는 마스터의 마지막 파일 설명자가 닫히나요?

Linux 프로그래밍 인터페이스는 SIGHUP터미널로 전송된 제어 프로세스를 나타냅니다.

워크스테이션의 터미널 창이 닫힐 때. 이는 터미널 창과 관련된 의사 터미널의 기본 측면에 대해 마지막으로 열린 파일 설명자가 닫혔기 때문에 발생합니다.

내 이해는 슬레이브를 위해 터미널 창이 생성되고 마스터가 여러 슬레이브를 가질 수 있다는 것입니다. 따라서 터미널 창이 닫히면 마지막으로 열린 파일 설명자만 의미합니다.노예터미널 창과 연결된 의사 터미널의 한쪽이 닫혀 있습니다. 왜 "메인"으로 인용됩니까?

감사해요.

답변1

내 이해는 슬레이브를 위해 터미널 창이 생성되고 마스터가 여러 슬레이브를 가질 수 있다는 것입니다.

의사 터미널에는 항상 하나의 마스터와 하나의 슬레이브만 있습니다. 이는 몇 가지 추가 작업이 포함된 양방향 파이프일 뿐입니다[1].

여러 창/탭을 열 수 있는 터미널 에뮬레이터는 여러 pseudo-tty 마스터도 처리할 수 있습니다.

이미 다른 글에서 설명했듯이답변, 터미널 에뮬레이터는 사용자가 창이나 탭 중 하나를 닫으려고 할 때 자체 작업을 수행할 수 있습니다. 예를 들어 xtermpty의 기본 측면은 닫히지 않지만 SIGHUPa만 tty의 프로세스 그룹으로 전송됩니다. 프로세스가 종료되거나 자체를 사용할 수 없을 때 창에서 시작된 부분만 파괴되고 종료됩니다(예: 슬레이브에 대한 모든 핸들이 닫혔기 때문에).

[1]. SystemV 시스템에서스트림 미디어, 이러한 추가 작업은 모듈식이며 "푸시"되어야 합니다 ioctl(I_PUSH). Linux 및 *BSD에서는 하드와이어되어 있습니다. 또한 ptys의 동작은 완전히 표준화되지 않았습니다. 마스터가 없는 슬레이브에서 읽으려는 시도는 Linux에서 실패하고 그 반대의 경우도 마찬가지이지만 EIOFreeBSD에서는 0(EOF)을 반환합니다.

관련 정보