linux ptys는 Linux 의사 터미널을 의미하며 의사 터미널은 문자 장치 쌍을 의미합니다. 의사 터미널 마스터와 의사 터미널 슬레이브는 "/dev/pts에 있는 파일에 해당합니다. /" 디렉터리이며 마스터는 메모리에서 파일 설명자로 식별됩니다. 의사 터미널은 사용자 모드에서 실행되는 애플리케이션인 터미널 에뮬레이터에서 제공됩니다.
이 튜토리얼의 운영 환경: 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 파일을 열고 슬레이브 측에서 쉘이 실행되도록 하여 의사 터미널 마스터 및 슬레이브 쌍을 생성합니다. 사용자가 터미널 시뮬레이션 소프트웨어에서 키보드 키를 누르면 바이트 스트림이 생성되어 마스터에 기록됩니다. 쉘 프로세스는 슬레이브에서 입력을 읽을 수 있으며 해당 서브루틴은 출력 내용을 슬레이브에 기록합니다. 터미널 에뮬레이션 소프트웨어는 창에 문자를 인쇄하는 역할을 담당합니다.
의사 터미널에는 대략 세 가지 유형의 사용 시나리오가 있습니다.
의사 터미널의 원리
/dev/ptmx는 문자 장치 파일입니다. 프로세스가 /dev/ptmx 파일을 열면 프로세스는 의사 터미널 마스터(ptm)를 가리키는 파일 설명자와 / dev/pts 디렉토리 의사 터미널 슬레이브(pts) 장치가 에서 생성되었습니다. /dev/ptmx 파일을 열어 얻은 각 파일 설명자는 자체 관련 pt를 갖는 독립적인 ptm입니다. ptmx(메모리에 ptmx 개체가 있다고 간주할 수 있음)는 내부적으로 해당 파일 설명자와 pt를 유지합니다. 관계, 이 파일 설명자에 대한 읽기 및 쓰기는 ptmx에 의해 해당 pts로 전달됩니다. lsof 명령을 통해 ptmx가 연 파일 설명자를 볼 수 있습니다:
$ sudo lsof /dev/ptmx
일반적으로 원격 연결을 통해 명령을 실행할 때 표준 프로세스 입력, 표준 출력 및 표준 오류 출력은 의사 터미널에 바인딩됩니다. 다음은 간단한 데모 프로그램입니다.
#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 중국어 웹사이트의 기타 관련 기사를 참조하세요!