首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Popen冻结

Python Popen冻结
EN

Stack Overflow用户
提问于 2012-10-12 04:28:08
回答 1查看 1.3K关注 0票数 1

由于某些原因,Popen在调用Powershell脚本后无法退出,并且该命令的输出不是动态的。

我是不是在代码中遗漏了什么:

代码语言:javascript
复制
sCmd = "powershell -file somefile.ps1"
process = subprocess.Popen(sCmd.strip(), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

while True:
    p = process.communicate()
    sys.stdout.write(p[0])
    sys.stderr.write(p[1])

    sys.stdout.flush()
    if(len(p[0]) == 0 and isinstance(process.poll(), int)):
        break

if(process.wait() != 0):
    os._exit(1)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-12 04:38:05

验证您的powershell命令是否确实正确退出。挂起的powershell进程很容易导致这种情况。

此外,您也不应该拥有shell=True。这是一个巨大的安全风险。这也可能是为什么这个过程被挂起的原因。如果您的powershell脚本不能运行,除非使用shell=True,那么修复它将是一个很好的解决方案。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12847991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档