2024-09-29 19:11:12 发布
网友
subprocess.check_output('lspci | egrep -i "virtio network" | wc -l', shell=True)
正在失败,退出状态为-15。发生这种情况的可能性是什么?在
我读过退出状态1,但是代码-15背后的具体含义是什么。在
如果子进程在接收到SIGTERM(即15)后死亡,您将在python2中看到这一点。因为您使用了shell=True,这意味着包装您的调用的/bin/sh进程被(接收到的信号)SIGTERM杀死(并终止)。在
SIGTERM
15
shell=True
/bin/sh
Python 3的输出可能会更有助于提示这种情况下的原因:
subprocess.CalledProcessError: Command 'lspci | egrep -i "virtio network" | wc -l' died with <Signals.SIGTERM: 15>.
看看你的台词:
也许这样做是有意义的:
len([l for l in subprocess.check_output('lspci').lower().splitlines() if b"virtio network" in l])
它不是将调用包装在shell实例中并分叉多个进程以获得具有特定字符串的行数,而是从lspci检索输出,将其转换为小写(使匹配不区分大小写,如上面的-i)并在行边界上拆分输出。基于这些行列表的列表理解得到了所有行的结果列表,这些行仅限于那些包含搜索到的str(或者更确切地说是{}是py2/3友好的)和{}给了我们一个int这样的行的数量。在
lspci
-i
str
int
如果子进程在接收到
SIGTERM
(即15
)后死亡,您将在python2中看到这一点。因为您使用了shell=True
,这意味着包装您的调用的/bin/sh
进程被(接收到的信号)SIGTERM
杀死(并终止)。在Python 3的输出可能会更有助于提示这种情况下的原因:
看看你的台词:
^{pr2}$也许这样做是有意义的:
它不是将调用包装在shell实例中并分叉多个进程以获得具有特定字符串的行数,而是从}是py2/3友好的)和{}给了我们一个
lspci
检索输出,将其转换为小写(使匹配不区分大小写,如上面的-i
)并在行边界上拆分输出。基于这些行列表的列表理解得到了所有行的结果列表,这些行仅限于那些包含搜索到的str
(或者更确切地说是{int
这样的行的数量。在相关问题 更多 >
编程相关推荐