关于subprocess.Popen阻塞的问题

月凉西厢 2019-12-02 06:52:08
我的想法是用python作界面,把子进程的标准输出实时的截取过来。
用python尝试了好多方法,找了好多方法,要么子进程把主进程卡死,要么在子进程返回之前都看不到输出。有好的方法么?

这是目前我的代码,感觉subprocess就是个坑,哪哪都是限制。。。

s = subprocess.Popen(cmd, shell=False, cwd=cwd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in iter(s.stdout.readline, b''): #这里直接会被卡死,因为子进程不会退出
print(line) # print to stdout immediately
s.stdout.close()

cmd命令是执行一个很简单的C++程序:不断地在标准输出里面输出字符串。

...全文
390 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
kttycctv 2021-07-08
  • 打赏
  • 举报
回复

遇到了同样的问题,请问楼主解决了吗

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧