【发布时间】:2021-03-10 23:46:39
【问题描述】:
我有下面的代码,它启动一个可执行文件,并在它完成执行后等待来自 shell 的响应。我有 60 秒的超时设置。如果可执行文件在 60 秒内完成工作,则变量 streamdata 是一个字符串,其中包含您以交互方式运行可执行文件时将打印到控制台屏幕的内容。
但是,如果达到超时截止,streamdata 的值似乎只是一个空白的二进制字符串。我该如何修改,以便在超时杀死 .exe 后仍然获得 STDOUT?
startupinfo = None
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
process = subprocess.Popen([<parameters>], stdout=subprocess.PIPE, startupinfo=startupinfo)
process2 = process.pid
streamdata = process.communicate(timeout=60)[0]
streamdata2 = streamdata.decode(errors='replace')
rc = process.returncode
【问题讨论】:
标签: python python-3.x subprocess