gpt4 book ai didi

python - 使用 Python 的 subprocess.call 杀死 firefox 进程

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:58:25 26 4
gpt4 key购买 nike

我正在尝试使用以下脚本杀死在我的系统上运行的所有 firefox 进程作为 python 脚本的一部分:

    if subprocess.call( [ "killall -9 firefox-bin" ] ) is not 0:
self._logger.debug( 'Firefox cleanup - FAILURE!' )
else:
self._logger.debug( 'Firefox cleanup - SUCCESS!' )

我遇到了如下所示的错误,但是只要我直接在终端中使用“killall -9 firefox-bin”就可以正常工作,没有任何错误。

       Traceback (most recent call last):
File "./pythonfile", line 109, in __runMethod
if subprocess.call( [ "killall -9 firefox-bin" ] ) is not 0:
File "/usr/lib/python2.6/subprocess.py", line 478, in call
p = Popen(*popenargs, **kwargs)
File "/usr/lib/python2.6/subprocess.py", line 639, in __init__
errread, errwrite)
File "/usr/lib/python2.6/subprocess.py", line 1228, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory

我是不是遗漏了什么,或者我应该尝试完全使用不同的 python 模块?

最佳答案

使用subprocess.call时需要将参数分开:

if subprocess.call( [ "killall", "-9", "firefox-bin" ] ) > 0:
self._logger.debug( 'Firefox cleanup - FAILURE!' )
else:
self._logger.debug( 'Firefox cleanup - SUCCESS!' )

call() 通常不会像 shell 那样处理您的命令,也不会将其解析为单独的参数。参见 frequently used arguments完整的解释。

如果您必须依赖命令的 shell 解析,请将 shell 关键字参数设置为 True:

if subprocess.call( "killall -9 firefox-bin", shell=True ) > 0:
self._logger.debug( 'Firefox cleanup - FAILURE!' )
else:
self._logger.debug( 'Firefox cleanup - SUCCESS!' )

请注意,我将您的测试更改为 > 0 以便更清楚地了解可能的返回值。由于 Python 解释器中的实现细节,is 测试碰巧适用于小整数,但它不是测试整数相等性的正确方法。

关于python - 使用 Python 的 subprocess.call 杀死 firefox 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12529471/

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