의사 터미널 (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.