【问题标题】:How to terminate/killall a program in python如何终止/杀死python中的程序
【发布时间】:2021-01-11 00:48:49
【问题描述】:

Linux 等效 killall(ProgramName) 的第一个简单答案

该程序将是一个切换程序。我可以启动 Firefox/程序。 def tolaunch(程序): os.system("firefox")

启动时我希望将启动的程序的名称保存在数组中(做起来很简单),然后启动程序(Firefox)/程序。

切换开关的想法出现了,当启动并且我完成浏览时,我希望调用相同的程序(我的),检查所述程序的数组并退出 Firefox/程序,通过运行一个简单的命令,如killall(“Firefox”) 但在 Python 代码中。我不想写一个冗长的命令/脚本,首先必须锻炼“pid”。

我似乎非常接近答案,但找不到。

编辑:人们要求提供代码示例 |这是我的代码

# Toggler for macro key -|- many keys = one toggler program
import os
import sys


def startp(program):
    # hard-coded
    os.system("firefox")


def exitp(program):
    # os.close(program)
      sys.exit(program)


# Begin
# hard-coded : program start
startp("Firefox")
# loop while program/s active
# exitp("Firefox")
# exit(program)   or program end

我试图在远离 cmets 的时候加入一些解释

【问题讨论】:

  • 显示您当前的代码,以及您想要做什么。 (请注意,os.system 是阻塞的,所以你将把代码放在哪里并不完全清楚)

标签: python arrays linux kill-process


【解决方案1】:

您要查找的是sys.exit() 命令。

有 4 个函数可以退出程序。它们是 quit()、exit()、sys.exit() 和 os._exit()。它们具有几乎相同的功能,因为它们引发了 Python 解释器退出的 SystemExit 异常,并且屏幕上没有打印堆栈回溯。

在上述四个退出函数中,sys.exit() 是首选,因为 exit() 和 quit() 函数不能在生产代码中使用,而 os._exit() 仅用于特殊情况,仅当立即退出时必填。

使用 sys.exit() 函数演示此行为:

import sys

i=0
while i in range(10):
    i += 1
    print(i)
    if i == 5:
        print('I will now exit')
        sys.exit()
    elif i > 5:
        print('I will not run, program alredy exited :(')

【讨论】:

  • 我有两个函数 startp 和 exitp 我不想停止我的程序(切换器)我想杀死/退出它启动的程序。像 os.system(program) 然后我希望它继续运行,直到我调用 exitp(program) 程序(toggler)将继续在后台运行,直到被告知退出。我正在研究如何发送它(toggler)消息怀疑论者
猜你喜欢
  • 2012-09-19
  • 1970-01-01
  • 2014-06-26
  • 1970-01-01
  • 2017-07-27
  • 1970-01-01
  • 1970-01-01
  • 2015-11-26
  • 1970-01-01
相关资源
最近更新 更多