python子进程子线程不退出?

时间:2015-05-28 13:41:53

标签: python

以下代码很奇怪:

def exec_shell(args, pipe = True):
    pre_fun = None
    if pipe == True:
        pre_fun = lambda: signal.signal(signal.SIGPIPE, signal.SIG_DFL)

    process = subprocess.Popen(args, stdout=subprocess.PIPE,
        stderr=subprocess.PIPE,
        preexec_fn = pre_fun)
    (out, err) = process.communicate() 

当我执行复杂的shell脚本时, 如果我设置管道是真的:    错误将是:         线程在运行时退出线程 如果我设置管道假,错误将是:破管

谁可以帮助我?感谢

1 个答案:

答案 0 :(得分:0)

您可以使用更简单的 os.popen()功能。我的程序示例:

import os
manifest = os.popen("aapt dump badging " + apk).read() #running command
for info in manifest.splitlines():
    ...  # extracting values

此外,子进程模块有一个错误:如果在 subprocess.Popen()中指定了非ascii路径,则会发生错误。