【发布时间】:2016-02-04 11:46:08
【问题描述】:
我正在启动一个进程并将其存储在一个变量中:
self.wpa_sup=subprocess.Popen(["/usr/sbin/wpa_supplicant", "-Dnl80211,wext", "-i",self.linux_iface, "-c", "/etc/wpa_supplicant_%s.conf"%self.name, "-s"],
stdout=open('/dev/null','w'), stderr=subprocess.STDOUT)
如果我打印变量,我可以看到该值已存储。
可以看到wpa_supplicant确实启动了。
但是,当我检查 poll() 值时,我得到的是 255 而不是 None
print self.wpa_sup.poll()
当我停止进程时,我会这样做:
self.wpa_sup.terminate()
self.wpa_sup.wait()
self.wpa_sup=None
有时(很多时候)它可以工作,我可以停止并启动该过程,成功地从poll() 读取值,但它似乎不可靠。知道为什么会发生这种情况吗?
【问题讨论】:
-
如果
poll()返回 255,这意味着您的进程以状态 255 退出。尝试阅读其 stdout/err 找出原因(删除stdout=open('/dev/null','w')) -
离题:存在
subprocess.DEVNULL -
@AndreaCorbellini 谢谢,不知道存在。我找到了问题,将回复 Sebastian 给出的答案。
-
但是
os.devnull已经存在于2.7中。
标签: python subprocess