我有以下Python代码:
strRunOutput = subprocess.run([strFastbootExecutable, "-s", dsn.upper(), "reboot"], timeout=5, stderr=subprocess.PIPE).stderr.decode('utf-8').upper()
基本上是这样做的:
fastboot -s G070GV1871970FCW reboot
这是输出:
< waiting for G070GV1871970FCW >
......这是悬挂的。为什么fastboot命令挂起,我不知道,但更令我困扰的是subprocess.run命令在我告诉它并且导致我的程序挂起后5秒钟没有超时。有什么想法会发生什么?
谢谢!
答案 0 :(得分:2)
这是一个已知问题 - Python bug跟踪器上有两张与之相关的票据。
由于你连接了一根烟斗,它没有超时。
Issue31935: subprocess.run() timeout not working with grandchildren and stdout=PIPE
Issue30154: subprocess.run with stderr connected to a pipe won't timeout when killing a never-ending shell commanad (sic)