subprocess.Popen 当执行的命令输出的内容过多时,可能会导致管道阻塞,管道使用的是缓冲区,默认大小只有4k;
比如:执行adb logcat命令
解决办法:
1、自定义管道大小
2、将输出内容放到内存中
3、使用os.system来执行,如果涉及多进程,配合multiprocessing来使用
比如:
def run_cmd(cmd_str):
shell_value = os.system(cmd_str)
return shell_value # 执行无错误,则返回0
CMD_2 = "adb logcat"
p = multiprocessing.Process(target=run_cmd, args=(CMD_2,))
p.start()
p.join() # 阻塞式等待命令执行结束