pty — 의사 터미널 유틸리티
pty — 의사 터미널 유틸리티
소스 코드: Lib/pty.py
pty 모듈은 의사 터미널(pty) 개념으로 시작된 프로세스를 시작하는 연산을 정의해요. 의사 터미널은 프로세스가 터미널에 입·출력하는 듯한 착각을 만들 수 있는데, 하지만 다른 프로세스가 데이터를 읽어들이죠.
가용성: Unix, WASI 아님.
이 모듈은 현재 Windows에서 사용할 수 없어요. Windows는 pseudo-terminal 개념을 사용하지 않아요. 이 모듈을 Windows에서 사용하려고 하면 ImportError가 발생해요.
출처: Python 표준 라이브러리
본문
pty.fork()
자식 프로세스를 포크(fork)해요. 자식은 제어 터미널로 의사 터미널을 사용하고, 표준 입력·출력·오류를 터미널의 파일 디스크립터에 연결해요. 부모 프로세스에는 자식의 pid와 (master_fd, slave_fd)로 구성된 튜플이 돌아가요. 자식에는 (0, 0)이 돌아가요. (슬레이브도 master로부터 열리므로 자식은 실제로 master만 닫아야 해요.)
버전 3.12에서 변경: 자식에서 반환된 값이 pid와 파일 디스크립터의 0과 0으로 변경됨. 이전 버전은 경고를 낸 뒤 슬레이브 파일 디스크립터를 닫았다.
버전 3.12에서 변경: 이전에는 이 함수가 실패 시 부모에서 OSError(NULL, ...)를 일으킬 수 있었지만 지금은 항상 예외를 처리해요.
pty.openpty()
새 의사 터미널을 열어요. 마스터와 슬레이브 파일 디스크립터 쌍 (master_fd, slave_fd)를 돌려줘요.
이 기능은 os.openpty()의 별칭이에요.
pty.spawn(argv[, master_read[, stdin_read]])
pty에서 프로세스를 스폰(spawn)해요. 프로그램이 종료될 때까지 자식 프로세스의 표준 출력과 표준 입력에서 읽기 및 쓰기를 조정해요. 호출이 끝나면 스폰된 프로세스의 종료 상태 코드가 돌아와요.
내부적으로 fork()를 사용하므로 spawn()은 fork()를 지원하지 않는 시스템에서 사용할 수 없어요.
선택적 master_read와 stdin_read 매개변수는 자식 프로세스의 마스터 파일 디스크립터와 표준 입력에서 읽을 때의 대체 방식을 지정해요. 두 함수 모두 파일 디스크립터를 인자로 받고, 읽은 바이트의 문자열을 돌려줘야 해요. 둘 중 하나라도 None이면 기본 방식이 사용돼요.
더 알아보기
pty.fork()와pty.openpty()는os모듈에도 각각os.fork()와os.openpty()로 평행 구현이 있어요.