의사 터미널 (pty / tty)이란 무엇입니까?


92

이것은 실제로 기본적인 질문 일 수도 있지만 철저하게 이해하고 싶습니다.

  1. 의사 터미널이란 무엇입니까? (tty / pty)
  2. 왜 필요한가요? 그들이 어떻게 소개되었고 무엇이 필요 했습니까?
  3. 그들은 구식입니까? 더 이상 필요하지 않습니까? 그것들을 대체 한 것이 있습니까?
  4. 유용한 사용 사례가 있습니까?

제가 한:

  1. 매뉴얼 페이지를 읽으십시오-정보는 있지만 정확한 그림은 없습니다.
  2. Richard Stevens의 Unix Network Programming에서 읽어 보았습니다. 정보가 있지만 why?부분은 없습니다 .

특히 openpty / forkpty와 같은 특수한 문제가 발생하지 않는다면 그렇게 생각합니다.

마이그레이션을 위해 플래그를 지정하려고 시도했지만 Linux / Unix가 올바른 마이그레이션 대상이 아닙니다. 그라데이션 하강을 시도하는 슈퍼 유저는 이미이 사이트보다 약간 더 나은 대상이며 아마도 더 나은 사이트로 라우팅 할 수 있습니다.

7
이것은 꽤 좋은 개요입니다 : linusakesson.net/programming/tty/index.php
— nos

@nos : 와우! 멋진 링크입니다. 내가 찾던 것. 고마워요 :)
— hari

Linux Programming Interface의 62 장과 64
— 장이

답변:


42
  1. 실제 터미널이 아닌 물리적 터미널의 기능을 가진 장치입니다. xterm과 같은 터미널 에뮬레이터에 의해 생성됩니다. 자세한 내용은 맨 페이지 pty (7)에 있습니다.
  2. 전통적으로 UNIX는 프로세스 그룹을위한 제어 터미널 개념을 가지고 있으며 많은 I / O 기능은 터미널을 염두에두고 구축되었습니다. 의사 터미널은 예를 들어 ^ C와 같은 일부 제어 문자를 처리합니다.
  3. 그것들은 구식이 아니며 ssh를 포함한 많은 프로그램에서 사용됩니다.
  4. ssh.

1
감사합니다 @thiton. 당신의 예를 자세히 설명해 주 ssh시겠습니까? pty / tty는 어떻게 사용합니까? 마스터 / 슬레이브 역할은 ssh어떻게됩니까?
— hari

3
ssh는 작성된 쉘에 pty를 할당합니다. 쉘은 슬레이브 엔드에 연결되어 일반 터미널의 모든 기능 (예 : 올바르게 기억하는 경우 termcap)에 의존 할 수 있으며 ssh 데몬은 마스터 엔드에 연결하여 입력을 송수신합니다.

27

정답은 "진짜가 아니라 모습"을 의미하는 "의사"입니다.

첫 번째 터미널에는 하드웨어 또는 직렬 포트를 표시하는 관련 장치와 연결된 하드웨어가 항상있었습니다.

xwindows, telnet 및 ssh를 사용하면 디스플레이 하드웨어를위한 소프트웨어 "의사 장치"가 필요했습니다. 그것들은 "의사 터미널"... 터미널 하드웨어를 에뮬레이트하고 물리적 장치와 같은 방식으로 입력 및 출력을 처리하여 연결된 소프트웨어가 연결된 실제 장치가 없음을 인식하지 못하는 소프트웨어입니다.


이제 동일한 하드웨어에 액세스해야하는 많은 애플리케이션이 있으므로 모든 앱이 "의사"터미널을 통해 하드웨어를 사용하고 있습니까?
— hari

나는 대답을 조금 확장했다.

아니요, 우리는 더 이상 실제로 그런 종류의 하드웨어를 가지고 있지 않습니다. xterm은 전형적인 터미널을 모방합니다.

@ thiton : 당신이 말할 때 emulates, 소프트웨어 부분이 아닌가요?
— hari

1
오늘날 유닉스 컨텍스트에서 "터미널"이라는 단어를 사용하는 것이 실제로 잘못 되었습니까? 모든 것이 "의사 단자"이기 때문에?
— A. Sallai

11

의사 터미널은 직렬 회선의 에뮬레이터입니다. telnet, ssh 및 xterm 쉘에 대한 엔드 포인트를 제공합니다.


2
그리고 그들은 고대 유물입니다 (실제로 쉘 / 텍스트 응용 프로그램은 40 년 전에 일한 것처럼 직렬 회선을 통해 텔레 타입 작가 를 에뮬레이트하는 장치를 통해 여전히 상호 작용하고 있습니다 ...) 우리는 여전히 교체가 없기 때문에 필요합니다. -(
— nos

글쎄, 당신이 터미널을 고려한다면, 나는 당신이오고 오는 편지의 스트림보다 훨씬 더 필요하다고 생각하지 않습니다 ...
— Diego Sevilla

4
@Diego Sevilla 원래 유닉스 발명가는 계획 9에서 tty / ptys를 없애 버렸고 터미널은 입 / 출력 데이터 스트림을 거의 사용합니다. 그러나 * nix에서 tty는 여전히 콘솔 크기와 터미널 에뮬레이터에서 터미널 크기, 흐름 제어, 라인 버퍼링, 특수 키 이벤트 및 기타 항목을 제어하는 ​​데 사용됩니다.
— nos

4
@nos : 우리가 믿게 될 고대 유적이 아니라고 밝혀졌습니다. Windows에서 그것들없이 시도하는 것은 결국 고통 스럽습니다. Powershell Remoting의 사용에는 한 가지 문제가 있습니다. 대화식 콘솔 프로그램은 작동하지 않으며 올바르게 작동하도록 수정할 수 없습니다. DOS EDIT 또는 vi와 같은 합리적인 텍스트 편집기는 불가능합니다.
— Joshua

2
@Joshua 반대로 또 다른 증거는 Unix의 오리지널 디자이너가 Plan 9 OS를 만들어 ttys를 완전히 없애 버렸지 만 그와 같은 방식으로 (그리고 훨씬 더) 원격으로 달성 한 것입니다.
— nos
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.