1

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

我是否遗漏了代码中的某些内容:

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)
4

1 回答 1

2

验证您的 powershell 命令是否确实正确退出。挂起的 powershell 进程很容易导致此问题。

你也不应该有shell=True. 这是一个巨大的安全风险。它也可能是为什么进程挂起的原因。如果您的 powershell 脚本无法运行,除非shell=True修复那将是一个很好的关注点。

于 2012-10-11T20:38:05.013 回答