2013-03-07 2 views
1

app.exe라는 이름의 app가 있습니다. app.exe는 installanywhere 실행 프로그램의 java.exe에 대한 랩퍼입니다. java.exe 프로세스를 생성하는 app.exe를 호출하는 python 스크립트 a.py가 있다고 가정합니다. a.py와 java.exe 사이의 대화 형 출력과 입력을 캡처하는 방법은 무엇입니까?파이썬 popen이 서브 프로세스의 서브 프로세스의 대화식 출력을 캡쳐 할 수 있습니까?

Poppon 할 수 있습니까? 우리가 더 읽을만한 간단한 예제가 있습니까? 이 시나리오에서도 pexpect를 사용할 수 있습니까?

감사

당신의 a.exe를java.exe를 표준 입력 자체 표준 출력- java.exe를 stdout으로 자신의 표준 입력을 리디렉션하는 경우 가능

답변

2

.

subprocess.Popen을 살펴보십시오. 두 개의 선택적 인수가 있습니다. stdin 하위 프로 시저의 표준 입력을 제어하고 표준 출력은 하위 프로 세스의 표준 출력을 제어합니다.

+0

감사합니다. Maksym이 응답 해 주셔서 감사합니다. 어떻게 작동하는지 보여줄 수 있습니까? – chz

+0

@chz 답변을 업데이트했습니다. 사실 나는 당신의 a.exe 파일에 대해 아무것도 모르고 stdin/stdout에 관해서는 아무 것도 말할 수 없다. –

0

하위 프로세스에 대한 설명서를 읽으십시오. 나는 그것이 subprocess.check_output (...)

또한 pexpect 사용할 수 있습니다 믿습니다.

http://www.noah.org/wiki/pexpect

+0

pexpect는 우리에게 효과가 없었습니다. 이유는 무엇입니까? app.exe가 다른 쉘을 시작하고 pexpect는 부모 쉘이 아니라 자식 쉘과 대화해야합니다. 가능하다면 아직 실종 된 것을 보여 주시겠습니까? – chz

+0

사실, 나는 신중하게 질문을 읽지 않았다. 프로세스 간 통신을 가로 채기에 대한 조사를해야 할 수도 있습니다. app.exe 또는 java.exe 소스에 액세스 할 수있는 경우 app.exe와 java.exe 사이에 들어가는 프록시를 작성할 수 있습니다. – erjoalgo