以下代码很奇怪:
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脚本时, 如果我设置管道是真的: 错误将是: 线程在运行时退出线程 如果我设置管道假,错误将是:破管
谁可以帮助我?感谢答案 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路径,则会发生错误。