나는이 질문과 대답을 알고 있으며 다른 사이트에서 찾을 수있는 해결책을 찾았습니다.^그러나 내 문제를 해결할 수는 없습니다. 내 딜레마는 다음과 같습니다 (Windows의 경우) :파이썬 하위 프로세스가 통신을 중단합니다.
다른 스크립트 (sniffer.py)를 호출하는 Popen을 통해 하위 프로세스를 만들고있는 주 스크립트 (main.py)가 있습니다. 이후 나는 main.py에서 몇 가지 일을하고 있고 마지막으로 sniffer.py와 마침내 전체 서브 프로세스에서 무한 루프를 끝내기 위해 서브 프로세스에 문자를 보내기를 원한다.
main.py는
process = Popen(["python", "sniffer.py", receiverIP, senderIP, "udp", path],stdin=PIPE)
#do some stuff
process.communicate('terminate')
는
def check(done):
while True:
if sys.stdin.read() == 'terminate':
done = True
break
def sniff(someparams):
done = False
input_thread = threading.Thread(target=check, args=(done,))
input_thread.daemon = True
input_thread.start()
while True:
#do some stuff
if done:
break
나는 또한 stdin.write으로 통신 전화를 결합하려고했습니다 sniffer.py하지만 아무런 영향을 미치지 않습니다.
참고 : 나는 sniffer.py에서 while 루프 내 의사 소통() 호출 후 계속하지 않는 것으로 나타났습니다 subprocess
함께 할 수있는
구체적으로 '작동하지 않음'을 구체적으로 지정할 수 있습니까? 디버깅을 돕기 위해 출력을 제공하십시오. – AndyW
질문을 편집했습니다. – braheem38