나는 이 주제를 이해하려고 노력하고 있지만 내 두뇌에는 너무 어려운 것 같습니다.
터미널 장치 항목은 일반적으로 /dev 및 /dev/pts라는 두 개의 디렉토리에 있습니다. /dev 디렉토리에는 가상 콘솔(예: /dev/tty1) 및 BSD 의사 터미널에 대한 항목이 포함되어 있습니다. /dev/pts 디렉토리에는 (System V 스타일) 의사 터미널 슬레이브 장치에 대한 항목이 포함되어 있습니다.
이것은 "Linux 프로그래밍 인터페이스"라는 책에서 발췌한 것입니다.
위의 주장에 따르면 /dev/pts
디렉토리에서 의사 터미널의 슬레이브 부분을 찾을 수 있습니다.
그렇다면 왜 내가 tty
인쇄하는 명령을 사용하고 있습니까 /dev/pts/0
? 위의 진술이 불완전합니까? 내 말은, 터미널과 의사 터미널 사이에 관계가 있습니까? 왜냐하면 /dev/pts
의사 터미널 쌍의 보조 부분만 찾을 수 있다면 해당 터미널이 의사 터미널처럼 구현된 것입니까?
항상 "Linux 프로그래밍 Iterface"라는 책에서:
일반 로그인 세션에서 쉘은 사용자 터미널에 직접 연결됩니다.
따라서 나는 이 주장을 바탕으로 계획을 세울 수 있습니다.
그러나 내 터미널이 슬레이브 장치와 연결되어 있으면(tty 명령에서 알 수 있듯이) 이 시나리오는 전혀 올바르지 않습니다.
이를 염두에 두고 터미널은 의사 터미널 쌍(슬레이브와 마스터 포함)처럼 구현됩니까, 아니면 슬레이브 파일(또는 이와 유사한 것)처럼 구현됩니까?
답변1
터미널과 의사 터미널 사이에 관계가 있습니까?
터미널은 원래 물건이었습니다이것들처럼또는이것들처럼. Unix 시스템의 터미널 장치 파일(터미널 장치 파일)은 /dev/tty1
일반적으로 직렬 인터페이스를 통해 운영 체제를 통해 해당 하드웨어에 연결됩니다.
파일에 쓰면 프린터(ASR33)나 화면(VT100)에 출력이 나타나며, 키보드로 입력하면 파일에서 출력을 읽을 수 있다. 또한 직렬 회선 속도, 통신 프로토콜 등을 설정하는 특수 명령(ioctl)을 지원합니다.
의사 터미널은 터미널의 드롭인 대체품으로, 다른 쪽 끝은 일종의 하드웨어가 아니라 두 번째 "파일"(기본 파일)입니다. 슬레이브는 하드웨어 터미널의 장치 파일과 똑같이 동작하므로 여기에 쉘을 연결할 수 있습니다. 주요 부분은 하드웨어 터미널을 에뮬레이트하기 위해 상대방의 애플리케이션에서 사용될 수 있습니다. 예를 들어 xterm
의사 터미널 쌍을 사용하고 마스터 섹션을 사용하여 X 시스템과 인터페이스합니다.
작은 문제가 있습니다. 주요 부분이 파일 시스템에 표시되지 않습니다. 원한다면 "보이지 않는 파일"입니다.
그러면 왜 tty 명령을 사용하면 /dev/pts/0이 인쇄됩니까?
입력 중인 셸이 xterm
터미널 에뮬레이터나 이와 유사한 프로그램에서 실행 중일 수 있기 때문입니다. 요즘에는 실제 하드웨어 터미널을 사용하는 사람이 거의 없습니다.
예, "터미널"을 "터미널 에뮬레이터"(터미널을 에뮬레이트하는 응용 프로그램)로 바꾸면 두 번째 다이어그램이 매우 유사합니다.
오늘날 많은 사람들은 "터미널 에뮬레이터"를 언급할 때 "터미널"이라고만 말합니다.