从python管理/终止子进程

时间:2015-07-11 22:47:51

标签: python python-3.x subprocess

这应该是一个基本问题,但我在这个问题上摸不着头......

我正在尝试构建一个python脚本的骨架,其中一部分将使用循环将字符串传递到相机SDK的控制台.exe(打开,等待用户输入,捕获/保存指定文件名的图像通过输入,等待下一个输入或被杀死)。

我已经构建了一些测试代码,它使用另一个简单的.exe程序打开,接受用户输入,将其写入.txt,等待下一个输入或被杀死:

from subprocess import Popen, PIPE
p = Popen("testinput1.exe", stdin=PIPE, stdout=PIPE, stderr=PIPE, shell=False)
bytes = str.encode("no")
for n in range(1, 5):
    p.stdin.write(bytes)
p.stdin.close()
p.terminate()

然而,这段代码本身并没有成功地打开过程,写入它并关闭 - 神秘地说,它根本没有做任何事情。

如果我删除该行

p.terminate()

我可以成功地将“nonononono”传输到文本文件中,但子进程未关闭,.txt文件增长1KB /秒,直到我关闭“testinput1.exe”

我需要在p.terminate()之前进行某种等待吗?或者我是否错误地了解整个过程?

0 个答案:

没有答案