Linux에서 /dev/tty 및 /dev/tty0을 사용하는 방법

Linux에서 /dev/tty 및 /dev/tty0을 사용하는 방법

제공된 방법을 테스트하여 /dev/tty와 /dev/tty0의 차이점을 확인할 수 있습니다.질문. 하지만 저는 이러한 장치의 실제 목적(예: 사용되는 상황)을 알고 싶습니다.

답변1

/dev/tty현재 컨트롤이 tty인가요?프로세스, 실제로 이 특수 파일을 여는 모든 프로세스에 대해. 가상 콘솔 장치일 필요는 없습니다(/dev/ttyN), 그리고, 직렬 포트 등 제어 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/consolesyslog 데몬과 때로는 커널 자체에서 많이 사용됩니다 .

차이점을 확인하기 위해 실험해 보세요. ( ++ ) 또는 터미널 에뮬레이터 root에서 셸을 실행하세요 . 지금tty3CtrlAltF3

# 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.

관련 정보