나는 최근에 터미널에 관한 질문을 올렸는데 이것은 그 자체로 질문할 가치가 있는 것 같습니다. 만약에단말기이것은 ~이 될 것이다터미널과 동의어, 장치 드라이버/장치 파일 자체,터미널에 대한 실제 인터페이스를 제공하는 것은 무엇이며 이를 뭐라고 부르나요?어떤 방식으로든 GUI를 의미하는 것이 아니라 텍스트가 인쇄되고 읽히는 실제 영역(가상 터미널 또는 의사 터미널)을 의미합니다. 이것이 터미널의 일부로 간주됩니까? 이것들은 어떻게든 커널에 의해 제어됩니까? 기본적으로 누군가가 gnome-terminal(또는 가상 터미널)과 같은 콘솔 프로그램을 작성하려는 경우 입력과 출력을 허용하는 일종의 커널 기반 위젯/인터페이스가 있습니까?기본적으로 tty(자체 /dev/tty)는 단순한 파일이거나 출력(다양한 색상과 두께로)을 표시하고 키보드에서 읽는 데 필요한 코드가 포함되어 있습니다.
이것이 맞습니까? 여기서 찾았습니다."터미널", "쉘", "tty" 및 "콘솔"의 정확한 차이점은 무엇입니까?즉, tty는 터미널과 동의어입니다. 이것이 나를 혼란스럽게 만드는 것입니다. 터미널을 에뮬레이션하거나 터미널을 제공하려면 터미널 드라이버(tty)와 터미널 표시 및 상호 작용 부분(xterm과 유사)이 필요하다고 생각합니다. 그럼 tty 자체는 입력과 출력을 위한 드라이버일 뿐이고 tty에서 텍스트를 표시하고 읽는 것은 xterm과 같은 것입니까? "/dev/tty 터미널 드라이버"를 "/dev/tty 터미널 드라이버"라고 부르는 것이 맞나요? 또한 xterm이라고 하면 $TERM var의 값을 참조하는 것입니다.
또 다른 생각(알려주세요): tty 파일은 터미널 또는 오늘날의 터미널 에뮬레이터와 셸 간의 연결과 동의어입니다. 이제 모두 같은 상자에 있지만 원래 터미널은 (분명히) 오늘날의 터미널 에뮬레이터이지만 tty 또는 tty 파일은 터미널과 셸/OS 간의 직렬 연결과 비슷합니다. 요즘에는 터미널 에뮬레이터가 /dev/tty... 파일과 상호 작용하기 위한 환경/창인 것 같습니다. 반대편에는 셸이 있습니다. 그렇다면 /dev/tty 파일에 쓰는 것은 직렬 포트에 쓰거나 직렬 포트에서 읽는 것과 똑같습니까? 나는 이것이 정확히 작동하는 방식이 아니라고 가정하고 어떤 도움이라도 대단히 감사하겠습니다 :-(.
답변1
원래 "tty"에는 하드웨어(현재 에뮬레이터)와 드라이버(/dev/pty* 또는 /dev/tty*를 통해 연결됨)라는 두 가지 정의가 있었습니다.
하드웨어/에뮬레이터는 다음을 담당합니다.
- 데이터 스트림을 가져와서 제시합니다. 여기에는 "커서 왼쪽으로 이동", "커서 깜박임", "화면 지우기" 등과 같은 제어 시퀀스 해석이 포함됩니다. 이러한 제어 시퀀스는 종종 제조업체마다 다릅니다.
- 사용자가 입력하는 키에 대한 키코드를 보냅니다. 대부분은 표준 ASCII 문자이지만 일부 터미널에서는 표준 키에 대한 독점 키코드도 보냅니다.
"tty" 드라이버는 다음을 담당합니다.
- 원시 또는 표준 모드에서 버퍼링을 관리합니다. 예를 들어 누를 때까지 한 줄의 문자를 버퍼링합니다 Enter.
- Cntl-s제어 흐름을 관리합니다. 예를 들어 /stop/ continue 를 사용할 수 있습니다 Cntl-q.
- 해당되는 경우 독점 키코드를 표준 ASCII로 변환합니다.
- 특정 제어 문자(예: Cntl-c및 )를 가로채서 적절하게 처리합니다( 또는 Backspace에 SIGINT 전송) .Cntl-cCntl-d
- 예를 들어,
echo
표준 문자 표시를 끄면 피드백(입력한 문자)이 터미널로 다시 전송되지 않습니다.
terminfo 및 termcap 데이터베이스는 작업(예: "클리어 스크린")을 위해 전송되어야 하는 터미널 제어 문자를 관리합니다. 이러한 제어 시퀀스는 드라이버가 아니라 하드웨어/에뮬레이터에 의해 해석됩니다.
답변2
이 링크가 그것을 다루고 있다고 생각합니다. 전체 기사를 읽어보세요. 정말 멋지네요 :-)
http://www.linusakesson.net/programming/tty/index.php-- 터미널(TTY)이 터미널 드라이버(세션 제어에 도움이 됨)와 회선 규칙(설정된 경우 특정 회선 편집을 제어할 수 있음)으로 구성되는 방식을 설명합니다. 원시 모드(라인 규칙)로 설정된 경우 라인 라이브러리 읽기 등으로 재정의될 수 있습니다. 터미널 에뮬레이터는 키보드 입력 및 디스플레이 처리를 어느 정도 제어합니다. /dev 아래의 터미널 장치 파일을 사용하여 회선 규칙과 드라이버를 조작할 수 있습니다. 이것이 내가 보는 방식입니다.
답변3
콘솔 tty( /dev/ttyX )의 경우 커널 드라이버가 출력 표시를 담당합니다. gnome-terminal의 경우 출력 표시를 담당합니다. 커널은 단순히 마스터/슬레이브 의사 터미널 쌍의 마스터를 gnome-terminal에 제공하여 의사 터미널의 출력이 표시를 위해 gnome-terminal로 전송되고 gnome-terminal이 연결된 프로세스의 터미널에 입력을 보낼 수 있도록 합니다. 읽기 위해.