【发布时间】:2013-01-05 15:13:15
【问题描述】:
主题基本上告诉我想做什么。
我阅读了文档,它告诉我如何处理信号,但没有告诉我如何自己做信号。
谢谢!
【问题讨论】:
-
请澄清:您是在谈论操作系统级别的信号还是 Qt 中的信号,即信号和插槽的概念。
-
请澄清:您是在谈论操作系统级别的信号还是转向信号中的信号,即指示左转或右转的概念
主题基本上告诉我想做什么。
我阅读了文档,它告诉我如何处理信号,但没有告诉我如何自己做信号。
谢谢!
【问题讨论】:
使用os.kill。例如,要将SIGUSR1 发送到您自己的进程,请使用
import os,signal
os.kill(os.getpid(), signal.SIGUSR1)
【讨论】:
您可以使用os.kill 方法。从 Python 2.7 开始,它应该可以在 Unix 和 Windows 上运行(我自己没有测试过),尽管它需要使用不同的参数来调用:
import os, signal
os.kill(pid, signal.SIGHUP) # Unix version only...
【讨论】:
只是提出一种不同的方法,如果它在 Windows 上:
import ctypes
ucrtbase = ctypes.CDLL('ucrtbase')
c_raise = ucrtbase['raise']
c_raise(some_signal)
'some_signal' 可以是任何信号编号,例如signal.SIGINT。
【讨论】:
os.kill 只是立即停止了它,这不是我想要的
直接使用signal 包(3.8 版中的新功能)。例如:
import signal
signal.raise_signal( signal.SIGINT )
参考:https://docs.python.org/3/library/signal.html#signal.raise_signal
【讨论】: