Lubuntu 18.04에서는 lxterminal에서 쉘을 실행합니다. 제어 터미널은 현재 의사 터미널 슬레이브입니다.
$ tty
/dev/pts/2
현재 제어중인 터미널 /dev/pts/2
과 /dev/tty
.
/dev/tty
내 현재 제어 터미널처럼 작동합니다 /dev/pts/2
.
$ echo hello > /dev/tty
hello
$ cat < /dev/tty
world
world
^C
그러나 하나가 다른 파일에 대한 심볼릭 링크 또는 하드 링크가 아닌 관련없는 파일 인 것 같습니다.
$ ls -lai /dev/tty /dev/pts/2
5 crw--w---- 1 t tty 136, 2 May 31 16:38 /dev/pts/2
13 crw-rw-rw- 1 root tty 5, 0 May 31 16:36 /dev/tty
제어 터미널이 다른 다른 세션의 경우 제어 터미널 /dev/tty
이 보장되는 경우 . 심볼릭 링크 나 하드 링크없이 어떻게 다른 제어 터미널이 될 수 있습니까?
그렇다면 그들의 관계와 차이점은 무엇입니까? 어떤 도움이라도 대단히 감사합니다!
이 게시물은 이전 게시물에서 시작되었습니다. 'tty'명령의 출력과 '/ dev / tty'파일 모두 현재 bash 프로세스의 제어 터미널을 참조합니까?
tty
섹션 4 의 맨 페이지 는 다음을 주장합니다.
이 파일 은 / dev / 청각 장애는 보통 모드 0666와 owner.group root.tty를의, 메이저 넘버 5와 마이너 넘버 0 문자 파일입니다. 프로세스의 제어 터미널 (있는 경우)의 동의어입니다.
ioctl(2)
tty가 참조하는 장치에서 지원 하는 요청 외에도ioctl(2)
요청TIOCNOTTY
이 지원됩니다.
TIOCNOTTY
제어 터미널에서 호출 프로세스를 분리합니다.
프로세스가 세션 리더 인 경우
SIGHUP
및SIGCONT
신호는 포 그라운드 프로세스 그룹으로 전송되고 현재 세션의 모든 프로세스는 제어 tty를 잃습니다.이
ioctl(2)
호출은 / dev / tty에 연결된 파일 설명자에서만 작동합니다 . 터미널에서 사용자가 호출 할 때 데몬 프로세스에서 사용합니다. 프로세스는 / dev / tty 를 열려고 합니다. 열기가 성공하면를 사용하여 터미널에서 분리되고TIOCNOTTY
, 열기가 실패하면 터미널에 부착되지 않고 스스로 분리 할 필요가 없습니다.
이것은 /dev/tty
제어 터미널에 대한 심볼릭 링크가 아닌 이유를 부분적으로 설명 합니다. 추가를 지원하고 제어 터미널 ioctl
이 없을 수도 있습니다 (그러나 프로세스는 항상 액세스를 시도 할 수 있음 /dev/tty
). 그러나 문서는 올바르지 않습니다 추가가 ioctl
유일한 액세스 할 수 없습니다 를 통해 /dev/tty
(참조 mosvy의 대답 도의 본질에 대한보다 합리적인 설명을 제공, /dev/tty
).
/dev/tty
이를 구현하는 드라이버가 호출 프로세스의 제어 터미널이있는 경우이를 결정하기 때문에 링크가 아닌 다른 제어 터미널을 나타낼 수 있습니다.
/dev/tty
이를 제어 터미널 이라고 생각할 수 있으므로 제어 터미널에만 의미가있는 기능을 제공하는 반면 /dev/pts/2
등은 일반 터미널이며 그 중 하나는 주어진 프로세스에 대한 제어 터미널이 될 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다