【发布时间】:2019-02-18 20:50:04
【问题描述】:
我有两个脚本,一个是连续读取串口,另一个是后台运行串口读取脚本。下面给出的脚本是我用来作为子进程运行的。
subprocess.Popen("echo " + user_password + " | sudo -S " + filePath shell=True, stdout=subprocess.PIPE)
如果我手动运行串口读取脚本,它不会空闲,它会连续运行。但是如果我使用上面的脚本作为子进程运行,串口读取脚本会在几分钟后空闲。我怎样才能阻止这个空闲问题?
【问题讨论】:
-
很好奇,但如果您之后闲置 pyhton 脚本,它会停止吗?类似 while(true); time.sleep(1)
-
脚本没有停止,它显示为在后台运行,但脚本没有响应
-
您可以直接调用
sudo,如Popen(["sudo", "-S", filePath], stdin=subprocess.PIPE, stdout=subprocess.PIPE)并输入密码,而不是依赖shell。它可以简化问题。还有,你用的是什么IPC,communcate()或者proc.stdout? -
这取决于你对我上一个问题的回答。
-
您是使用
Popen的结果到另一个变量,还是您发布的整行代码?如果是后者,您应该取出, stdout=subprocess.PIPE,因为这意味着 Python 代码正在并且应该正在读取和处理命令的标准输出。如果不是,那么很可能是与操作系统相关的问题。
标签: python python-3.x python-2.7 subprocess