【问题标题】:killing python process while sleep在睡眠时杀死python进程
【发布时间】:2023-03-26 23:55:01
【问题描述】:

我有一些 python 文件,它会休眠一段时间,然后终止某个进程。 但是如果用户改变主意并想终止我的 python 程序,他必须去 系统监视器。 因为实例正在休眠。

import subprocess
import os
import signal
import  datetime
import time
def kill():
    time.sleep(3600) #sleep for 1 hour
    #here goes terminating, for example "gedit" process after sleeping
    proc = subprocess.Popen(["pgrep", "gedit"], stdout=subprocess.PIPE)
    for pid in proc.stdout:
        os.kill(int(pid), signal.SIGTERM)
if __name__ == "__main__":
    kill()

我知道如果用户需要,我必须创建另一个进程来杀死这个休眠的进程,但我不明白如何。请帮忙

【问题讨论】:

  • subprocess.call(['pkill', 'gedit']) 而不是 pgrep

标签: python linux subprocess


【解决方案1】:

按住 CTRL+C,即使在 mac 上也会关闭进程。如果您讨厌错误消息,请尝试此代码。

from time import sleep
try: #Try to do this
    sleep(3600) #One hour sleep
    '''vvv Your code goes here vvv'''
    
    '''^^^^^^^^^^^^^^^^^^^^^^^^^^^'''
except KeyboardInterrupt: #In the case of keyboard interrupt
    exit() #Kill process, end code, no errors, except that you will see ^C upon keyboard interrupt. This is also Ctrl+C on mac.
#EOF

上面的代码适用于 2.4-3.10。

希望对你有所帮助;D

【讨论】:

    【解决方案2】:

    在命令行环境中,您可以使用Ctrl+C (SIGINT) 中断脚本:

    $ python -c'import time; time.sleep(300)'
    ^CTraceback (most recent call last):
      File "<string>", line 1, in <module>
    KeyboardInterrupt
    

    【讨论】:

    • 我使我的文件对用户可执行。他以双击的方式运行它。没有终端。附:谢谢你,船长:)
    • @Feanor:您可以使用“取消”按钮显示 GUI,例如 countdown.py
    猜你喜欢
    • 2023-02-01
    • 1970-01-01
    • 2015-06-11
    • 2016-08-20
    • 2020-07-26
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多