这应该是一个基本问题,但我在这个问题上摸不着头......
我正在尝试构建一个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()之前进行某种等待吗?或者我是否错误地了解整个过程?