stdin 및 stdout을 통해 앞뒤로 보낸 메시지를 통해 제어 할 외부 프로세스를 시작해야합니다. Subprocess.Popen을 사용하여 프로세스를 시작할 수 있지만 필요에 따라 실행을 제어 할 수 없습니다.STDIN/STDOUT을 통한 외부 프로세스 시작 및 제어
내가 완료하기 위해 노력하고있어의 흐름이다 :
- 다음 처리를 완료하기 위해 외부 프로세스에게 몇 가지 단계 수를
- 시작 외부 프로세스
- 으로 반복 새 줄 문자를 쓰는 것만으로 단계를 밟으십시오.
- 외부 프로세스가 stdout에 개행 문자를 작성하여 단계를 완료 할 때까지 기다립니다.
- 외부 프로세스의 stdin을 닫아 실행이 완료되었음을 외부 프로세스에 알립니다.
것은 내가 지금까지 다음과 같이 올라와있다 :
process=subprocess.Popen([PathToProcess],stdin=subprocess.PIPE,stdout=subprocess.PIPE);
for i in xrange(StepsToComplete):
print "Forcing step # %s"%i
process.communicate(input='\n')
나는 '\ n을'이 외부 프로세스에 전달되지 않은 위의 코드를 실행하고 나는 결코 단계 # 0 이상으로 얻을 수없는 경우 . 코드는 process.communicate()에서 차단되고 더 이상 진행되지 않습니다. 내가 commun() 메서드를 잘못 사용하고 있습니까?
또한 "외부 프로세스가 새 줄을 쓸 때까지 대기"기능을 어떻게 구현합니까?
내가 처음이 작업을 수행 할 때 약간의 문제가 발생하는 이유는 몇 개의 문자 만 보내면 아무것도 전송되기 전에 스트림을 플러시해야 할 수 있다는 것입니다. – Kiv