gpt4 book ai didi

python - 将输入发送到 python 子进程而不等待结果

转载 作者:太空宇宙 更新时间:2023-11-04 00:10:58 25 4
gpt4 key购买 nike

我正在尝试为一段代码编写一些基本测试,这些代码通常通过标准输入无休止地接受输入,直到给出特定的退出命令。

我想检查程序是否在给定一些输入字符串时崩溃(经过一段时间来处理处理),但似乎无法弄清楚如何发送数据而不是卡在等待我的输出不关心。

我当前的代码如下所示(使用 cat 作为程序示例):

myproc = subprocess.Popen(['cat'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)

myproc.communicate(input=inputdata.encode("utf-8"))
time.sleep(0.1)

if myproc.poll() != None:
print("not running")
else:
print("still running")

我如何修改它以允许程序继续轮询而不是在 communicate() 调用后挂起?

最佳答案

您在这里使用了错误的工具,communicate 等待程序结束。您应该简单地提供子流程的标准输入:

myproc = subprocess.Popen(['cat'], stdin=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
myproc.stdin.write(inputdata.encode("utf-8"))

time.sleep(0.1)

if myproc.poll() != None:
print("not running")
else:
print("still running")

但要注意:您不能确定输出管道在子进程结束之前会包含任何内容...

关于python - 将输入发送到 python 子进程而不等待结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52510318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com