Linux 프로그래밍 인터페이스는 SIGHUP
터미널로 전송된 제어 프로세스를 나타냅니다.
워크스테이션의 터미널 창이 닫힐 때. 이는 터미널 창과 관련된 의사 터미널의 기본 측면에 대해 마지막으로 열린 파일 설명자가 닫혔기 때문에 발생합니다.
내 이해는 슬레이브를 위해 터미널 창이 생성되고 마스터가 여러 슬레이브를 가질 수 있다는 것입니다. 따라서 터미널 창이 닫히면 마지막으로 열린 파일 설명자만 의미합니다.노예터미널 창과 연결된 의사 터미널의 한쪽이 닫혀 있습니다. 왜 "메인"으로 인용됩니까?
감사해요.
답변1
내 이해는 슬레이브를 위해 터미널 창이 생성되고 마스터가 여러 슬레이브를 가질 수 있다는 것입니다.
의사 터미널에는 항상 하나의 마스터와 하나의 슬레이브만 있습니다. 이는 몇 가지 추가 작업이 포함된 양방향 파이프일 뿐입니다[1].
여러 창/탭을 열 수 있는 터미널 에뮬레이터는 여러 pseudo-tty 마스터도 처리할 수 있습니다.
이미 다른 글에서 설명했듯이답변, 터미널 에뮬레이터는 사용자가 창이나 탭 중 하나를 닫으려고 할 때 자체 작업을 수행할 수 있습니다. 예를 들어 xterm
pty의 기본 측면은 닫히지 않지만 SIGHUP
a만 tty의 프로세스 그룹으로 전송됩니다. 프로세스가 종료되거나 자체를 사용할 수 없을 때 창에서 시작된 부분만 파괴되고 종료됩니다(예: 슬레이브에 대한 모든 핸들이 닫혔기 때문에).
[1]. SystemV 시스템에서스트림 미디어, 이러한 추가 작업은 모듈식이며 "푸시"되어야 합니다 ioctl(I_PUSH)
. Linux 및 *BSD에서는 하드와이어되어 있습니다. 또한 ptys의 동작은 완전히 표준화되지 않았습니다. 마스터가 없는 슬레이브에서 읽으려는 시도는 Linux에서 실패하고 그 반대의 경우도 마찬가지이지만 EIO
FreeBSD에서는 0(EOF)을 반환합니다.