>  기사  >  운영 및 유지보수  >  리눅스 ptys 란 무엇입니까?

리눅스 ptys 란 무엇입니까?

藏色散人
藏色散人원래의
2023-04-20 10:32:532564검색

linux ptys는 Linux 의사 터미널을 의미하며 의사 터미널은 문자 장치 쌍을 의미합니다. 의사 터미널 마스터와 의사 터미널 슬레이브는 "/dev/pts에 있는 파일에 해당합니다. /" 디렉터리이며 마스터는 메모리에서 파일 설명자로 식별됩니다. 의사 터미널은 사용자 모드에서 실행되는 애플리케이션인 터미널 에뮬레이터에서 제공됩니다.

리눅스 ptys 란 무엇입니까?

이 튜토리얼의 운영 환경: linux5.9.8 시스템, Dell G3 컴퓨터.

Linux ptys란 무엇인가요?

Linux 의사 터미널(pty)

우리가 자주 이야기하는 터미널은 tty1-6 터미널과 의사 터미널로 구분됩니다. tty1-6을 사용하는 경우에는 일반적으로 Linux 시스템을 키보드와 모니터에 직접 연결하거나 vSphere 콘솔과 같은 가상화 솔루션을 사용하는 경우도 있습니다. 이 기사에서는 의사 터미널의 기본 개념을 소개합니다. 이 기사의 데모 부분에서 사용된 환경은 ubuntu 18.04입니다.

의사 터미널

의사 터미널(때때로 pty라고도 함)은 한 쌍의 문자 장치, 의사 터미널 마스터 및 의사 터미널 슬레이브를 나타냅니다. 슬레이브는 /dev/pts/ 디렉터리의 파일에 해당하고, 마스터는 메모리에서 파일 설명자(fd)로 식별됩니다. 의사 터미널은 사용자 모드에서 실행되는 애플리케이션인 터미널 에뮬레이터에서 제공됩니다.

마스터 엔드는 사용자의 모니터와 키보드에 가까운 엔드이고, 슬레이브 엔드는 가상 터미널에서 실행되는 CLI(Command Line Interface) 프로그램입니다. Linux 의사 터미널 드라이버는 프로그램 입력을 위해 마스터 측(예: 키보드)에서 작성한 데이터를 슬레이브 측으로 전달하고, 슬레이브 측에서 프로그램이 작성한 데이터를 읽기 위해 마스터 측(디스플레이 드라이버, 등.). 아래 다이어그램을 참조하십시오(이 사진은 인터넷에서 가져온 것입니다).

GNOME 터미널과 같이 우리가 여는 터미널 데스크톱 프로그램은 실제로 터미널 시뮬레이션 소프트웨어입니다. 터미널 에뮬레이션 소프트웨어가 실행되면 /dev/ptmx 파일을 열고 슬레이브 측에서 쉘이 실행되도록 하여 의사 터미널 마스터 및 슬레이브 쌍을 생성합니다. 사용자가 터미널 시뮬레이션 소프트웨어에서 키보드 키를 누르면 바이트 스트림이 생성되어 마스터에 기록됩니다. 쉘 프로세스는 슬레이브에서 입력을 읽을 수 있으며 해당 서브루틴은 출력 내용을 슬레이브에 기록합니다. 터미널 에뮬레이션 소프트웨어는 창에 문자를 인쇄하는 역할을 담당합니다.

의사 터미널 사용 시나리오

의사 터미널에는 대략 세 가지 유형의 사용 시나리오가 있습니다.

  • xterm 및 gnome-terminal과 같은 그래픽 인터페이스를 갖춘 터미널 시뮬레이션 소프트웨어는 키보드 및 마우스 이벤트를 텍스트 입력 및 출력을 그래픽으로 표시
  • 원격 셸 애플리케이션(예: sshd)은 클라이언트의 원격 터미널과 서버의 의사 터미널 사이에서 입력 및 출력을 중계합니다.
  • screen 및 tmux와 같은 멀티플렉서 애플리케이션. 한 터미널에서 다른 터미널로 입력과 출력을 중계하여 실제 터미널에서 텍스트 모드 응용 프로그램을 분리합니다. Linux에서 의사 터미널 개념이 제안되는 이유는 무엇입니까? 쉘과 같은 명령줄 프로그램은 모니터와 키보드에서 직접 데이터를 읽을 수 없나요?
동일한 화면에서 여러 터미널 에뮬레이터를 실행하고 원격 로그인을 달성하려면 쉘이 의사 터미널 계층을 직접 통과하도록 할 수 없습니다. 운영 체제의 주요 아이디어인 가상화의 지침에 따라 여러 터미널 에뮬레이터와 원격 사용자에게 여러 가상 터미널을 할당해야 합니다. 위 그림에서 쉘이 사용하는 슬레이브 쪽은 가상화된 터미널입니다. 마스터 측은 사용자 측의 상호 작용을 시뮬레이션합니다. 가상화된 터미널이라고 불리는 이유는 데이터 스트림을 전달하는 것 외에도 터미널처럼 보이기 때문입니다.


의사 터미널의 원리

의사 터미널은 기본적으로 사용자 모드에서 실행되는 터미널 에뮬레이터에 의해 생성된 한 쌍의 문자 장치입니다. 슬레이브는 /dev/pts/ 디렉터리의 파일에 해당하고, 마스터는 메모리에서 파일 설명자(fd)로 식별됩니다. 의사 터미널의 경우 핵심은 소프트웨어 에뮬레이션 터미널 프로그램이 사용자 공간에서 실행된다는 것입니다. 이것이 터미널과의 근본적인 차이점입니다.

리눅스 ptys 란 무엇입니까?

/dev/ptmx는 문자 장치 파일입니다. 프로세스가 /dev/ptmx 파일을 열면 프로세스는 의사 터미널 마스터(ptm)를 가리키는 파일 설명자와 / dev/pts 디렉토리 의사 터미널 슬레이브(pts) 장치가 에서 생성되었습니다. /dev/ptmx 파일을 열어 얻은 각 파일 설명자는 자체 관련 pt를 갖는 독립적인 ptm입니다. ptmx(메모리에 ptmx 개체가 있다고 간주할 수 있음)는 내부적으로 해당 파일 설명자와 pt를 유지합니다. 관계, 이 파일 설명자에 대한 읽기 및 쓰기는 ptmx에 의해 해당 pts로 전달됩니다. lsof 명령을 통해 ptmx가 연 파일 설명자를 볼 수 있습니다:

$ sudo lsof /dev/ptmx

프로세스의 기본 IO

일반적으로 원격 연결을 통해 명령을 실행할 때 표준 프로세스 입력, 표준 출력 및 표준 오류 출력은 의사 터미널에 바인딩됩니다. 다음은 간단한 데모 프로그램입니다.

#include <stdio.h>#include <unistd.h>int main()
{
    printf("PID : %d\n", getpid());
    sleep(200);

    printf("\n");    return 0;
}</unistd.h></stdio.h>

이 코드를 mydemo.c 파일에 저장하고 다음 명령을 실행합니다. 이 프로그램을 컴파일하고 실행하려면:

$ gcc -Wall mydemo.c -o demo
$ ./demo

데모 프로그램은 이제 자체 프로세스의 PID를 출력하고 lsof 명령을 실행합니다.

0u(표준 입력), 1u(표준 출력) 및 2u(표준 오류 출력) 프로세스는 모두 의사 터미널 /dev/pts/0에 바인딩됩니다.

추천 학습: "linux 비디오 튜토리얼

"

위 내용은 리눅스 ptys 란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.