제공된 방법을 테스트하여 /dev/tty와 /dev/tty0의 차이점을 확인할 수 있습니다.질문. 하지만 저는 이러한 장치의 실제 목적(예: 사용되는 상황)을 알고 싶습니다.
답변1
/dev/tty
현재 컨트롤이 tty인가요?프로세스, 실제로 이 특수 파일을 여는 모든 프로세스에 대해. 가상 콘솔 장치일 필요는 없습니다(/dev/tty
N), 그리고푸티, 직렬 포트 등 제어 tty가 가상 콘솔이 아닌 경우 해당 의사 터미널이 실제로 시스템 콘솔에 구현되어 있더라도 프로세스는 콘솔 장치와 상호 작용할 필요가 없습니다. 예를 들어, 로컬로 실행되는 X 서버 아래의 터미널 에뮬레이터에 있는 셸의 경우 프로그램은 다음과 같은 대화형 체인을 형성합니다.
Unix 쉘
⇕ /dev/pts/2
( /dev/tty
== 해당 프로세스의 경우)
커널 pty 드라이버
⇕ 터미널 /dev/ptmx
에뮬레이터
⇕ X Window Protocol
X Server
⇕ /dev/tty7
( /dev/tty
== 서버의 경우)
시스템 콘솔
zxc↿⇂[_̈░░]
사용자
사용자 모드 프로그램의 사용에는 다음이 /dev/tty
포함됩니다.
- 모든 리디렉션과 파이프를 무시하고 제어 터미널에 무언가를 씁니다.
- ioctl() 생성 – tty_ioctl(4) 참조;
- 예를 들어 터미널(TIOCNOTTY)에서 분리합니다.
/dev/tty0
현재 활성 상태입니다(즉, 모니터에 표시됨).가상 콘솔~의운영 체제. 이 특정 파일은 시스템 소프트웨어에서 많이 사용되지는 않지만/dev/console
실제로는 "별명"tty0
/dev/console
syslog 데몬과 때로는 커널 자체에서 많이 사용됩니다 .
차이점을 확인하기 위해 실험해 보세요. ( ++ ) 또는 터미널 에뮬레이터 root
에서 셸을 실행하세요 . 지금tty3
CtrlAltF3
# sleep 2; echo test >/dev/tty
그런 다음 빠르게 Ctrl++ Alt하고 F22초 동안 기다린 다음 Ctrl++ Alt로 돌아옵니다. 출력은 어디서 보나요?
이제 에 대해 동일한 테스트를 수행합니다 /dev/tty0
.
답변2
/dev/tty는 모든 프로세스에 대한 제어 tty입니다. 이것이 당신의 껍질일 수도 있습니다.
프로세스가 tty를 제어하지 않으면 /dev/tty를 사용할 수 없으며 이는 데몬의 경우에도 마찬가지입니다.
프로세스에 제어 tty가 있는 경우 /dev/tty는 프로세스가 stdin, stdout 또는 stderr에 사용하는 실제 tty 드라이버의 드라이버 별칭입니다.
자세한 내용은 을 참조하세요 man -s7d tty
. 이 설명서의 섹션은 운영 체제마다 다를 수 있으므로 파트 1의 매뉴얼 페이지와 혼동하지 마십시오. 예를 들어 확인하시기 바랍니다 man -k tty
.