gpt4 book ai didi

python - 子进程 poll() 返回错误值

转载 作者:行者123 更新时间:2023-12-01 04:09:04 26 4
gpt4 key购买 nike

我正在启动一个进程并将其存储在变量中:

 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() 读取值,但它似乎不可靠。知道为什么会发生这种情况吗?

最佳答案

I can see that wpa_supplicant is indeed started.

if .poll() 返回非 None 值;这意味着该进程已死亡,而且它已收获(状态已读取),即,您不会在进程表中看到任何内容。如果您在 .poll() == 255; 之后看到某些内容这意味着您正在查看不同的进程,例如,由 Popen() 启动的子进程可能依次启动了孙进程,并且 wpa_supplicant 退出,而孙进程继续运行,否则您可能会看到一些与您的脚本进程无关的内容。将 wpa_supplicant.pid 与您在进程表中看到的内容进行比较,以找出您正在观察的场景(如果它们很接近,则前者比后者更有可能)。

具体返回码的含义取决于命令,例如 ssh returns 255 in case of an error (否则它返回其运行的远程命令的退出状态 - 255 indicates wrong argument to the exit builtin in bash,因此远程程序生成它的可能性较小)。删除 stdout=open('/dev/null', 'w'),查看错误为 @Andrea Corbellini suggested .

关于python - 子进程 poll() 返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35200176/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com