python 获取控制台被关闭事件和ctrl+c事件 脚本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 获取控制台被关闭事件和ctrl+c事件 脚本相关的知识,希望对你有一定的参考价值。
参考技术A import win32apidef on_close(sig):
win32api.SetConsoleCtrlHandler(on_close, True)
如何使用 Ctrl+C 输入干净地退出 QProcess?
【中文标题】如何使用 Ctrl+C 输入干净地退出 QProcess?【英文标题】:How to cleanly exit a QProcess with Ctrl+C input? 【发布时间】:2020-03-12 09:37:23 【问题描述】:我正在运行一个 QProcess 事件,该事件在 cmd 中直接按 Ctrl+C 时退出。如何从 python 发送信号以干净地关闭进程?我试过 kill() ,它不会让程序相应地保存。 terminate() 也没有响应。我希望你能帮忙。
self.btn_1 = QPushButton('Start')
self.btn_1.clicked.connect(self.start)
self.btn_2 = QPushButton('Stop')
self.btn_1.clicked.connect(self.stop)
self.process = QProcess()
def start(self):
self.process.start("C:\path\program.exe")
def stop(self):
print('Stop the process!')
【问题讨论】:
【参考方案1】:您需要获取进程PID,然后您可以通过os.kill
发送信号:
import os
import signal
os.kill(<pid>, signal.SIGINT) #SIGINT is CTRL-C
您从 QProcess
对象获取 PID:
pid = self.process.processId()
编辑:在 Windows 上,将 SIGINT 替换为 CTRL_C_EVENT
【讨论】:
感谢您的回答。它适用于关闭进程,但是,保存数据需要一些时间(例如 2 秒)并且它会过快地终止进程。你知道有什么方法可以等到数据保存完成吗? 我让它工作了。我不得不将 SIGINT 更改为 CTRL_C_EVENT。感谢您的帮助!以上是关于python 获取控制台被关闭事件和ctrl+c事件 脚本的主要内容,如果未能解决你的问题,请参考以下文章
[No000090]C#捕获控制台(console)关闭事件及响应cmd快捷键
如何在 Powerpoint 2013 插件(用 C# 开发)中获取“ctrl c”或鼠标复制事件?