Subprocess.check_输出退出状态15失败

2024-09-29 19:11:12 发布

您现在位置:Python中文网/ 问答频道 /正文

subprocess.check_output('lspci | egrep  -i "virtio network" | wc -l', shell=True)

正在失败,退出状态为-15。发生这种情况的可能性是什么?在

^{pr2}$

我读过退出状态1,但是代码-15背后的具体含义是什么。在


Tags: 代码trueoutput状态check情况networkshell
1条回答
网友
1楼 · 发布于 2024-09-29 19:11:12

如果子进程在接收到SIGTERM(即15)后死亡,您将在python2中看到这一点。因为您使用了shell=True,这意味着包装您的调用的/bin/sh进程被(接收到的信号)SIGTERM杀死(并终止)。在

Python 3的输出可能会更有助于提示这种情况下的原因:

subprocess.CalledProcessError: Command 'lspci | egrep  -i "virtio network" | wc -l' died with <Signals.SIGTERM: 15>.

看看你的台词:

^{pr2}$

也许这样做是有意义的:

len([l for l
     in subprocess.check_output('lspci').lower().splitlines()
     if b"virtio network" in l])

它不是将调用包装在shell实例中并分叉多个进程以获得具有特定字符串的行数,而是从lspci检索输出,将其转换为小写(使匹配不区分大小写,如上面的-i)并在行边界上拆分输出。基于这些行列表的列表理解得到了所有行的结果列表,这些行仅限于那些包含搜索到的str(或者更确切地说是{}是py2/3友好的)和{}给了我们一个int这样的行的数量。在

相关问题 更多 >

    热门问题