문제

나는 불확실한 사용할지 여부를 pty.fork()os.fork() 때 산란을 외부로 표시합니다.(과 같은 체스 엔진)

내가 원하는 양산 프로세스가 죽으면 부모가 사망으로,산란 앱에서는 터미널도 있습니다.

은 무엇복 사이의 두 개의 포크?

도움이 되었습니까?

해결책

함께 만든 아동 과정 os.fork() 아동이 pty.fork() 새로운 의사 터미널에 연결되어 있습니다. Xterm과 같은 프로그램을 작성할 때 나중에 필요합니다. pty.fork() 부모 프로세스에서는 자식 프로세스의 단자를 제어하기 위해 디스크립터를 반환하므로 시각적으로 데이터를 나타내고 사용자 작업을 터미널 입력 시퀀스로 변환 할 수 있습니다.

업데이트:

Pty (7) Man Page :

터미널에 연결될 것으로 예상되는 프로세스는 의사 말단의 슬레이브 엔드를 열고 마스터 엔드를 개설 한 프로그램에 의해 구동 될 수 있습니다. 마스터 엔드에 기록 된 모든 것은 마치 마치 터미널에 입력 된 것처럼 슬레이브 엔드의 프로세스에 제공됩니다. 예를 들어, 인터럽트 문자 (일반적으로 Control-C)를 마스터 장치에 작성하면 슬레이브에 연결된 전경 프로세스 그룹에 대해 인터럽트 신호 (Sigint)가 생성됩니다. 반대로, 의사 말단의 슬레이브 끝에 기록 된 것은 마스터 엔드에 연결된 프로세스에 의해 읽을 수 있습니다.

다른 팁

과거에 나 subprocess 모듈이다.제공하는 좋은 api 과 교통을 위한 서브프.

당신이 사용할 수 있는 call(*popenargs, **kwargs) 차단을 실행,그리고 저는 믿을 사용하여 Popen 클래스를 처리할 수 있는 비동기를 실행합니다.

체크아웃 문서 더 많은 정보를 원하시면.

까지 사용 os.forkpty.fork, 모두 높은 플랫폼을 따라,그리고 어느 것 일(또는 적어도 테스트)하도록 만드는 경우가 있습니다.이 pty 모듈을 것 같다는 더 제한된 두 가지의하여 읽기 쉽습니다.주요한 차이는 유사항 터미지 측면입니다.그렇지 않으면 기꺼이 건축가의 코드 등의 방법으로 사용할 수 있도록 이 subprocess 모듈,나는 아마와 함께 이동 os.forkpty.fork.

실제로 터미널을 기대하는 일부 응용 분야에는 가문체가 필요합니다. 대화식 쉘은 이러한 예 중 하나이지만 다른 많은 것들이 있습니다. Pty.fork 옵션은 다른 OS.Fork이 아니라 의사 테일을 사용하는 특정 API입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top