12

该主题基本上告诉我想要什么。

我阅读了文档,它告诉我如何处理信号,但没有告诉我如何自己做信号。

谢谢!

4

4 回答 4

24

使用os.kill. 例如,要发送SIGUSR1到您自己的进程,请使用

import os,signal
os.kill(os.getpid(), signal.SIGUSR1)
于 2013-01-22T11:43:52.677 回答
13

您可以使用该os.kill方法。从 Python 2.7 开始,它应该可以在 Unix 和 Windows 上工作(我自己没有测试过),尽管它需要使用不同的参数来调用:

import os, signal

os.kill(pid, signal.SIGHUP) # Unix version only...
于 2013-01-22T11:46:11.567 回答
4

直接使用signal包(版本 3.8 中的新功能)。例如:

import signal
signal.raise_signal( signal.SIGINT )

参考:https ://docs.python.org/3/library/signal.html#signal.raise_signal

于 2021-11-11T15:23:38.157 回答
3

只是提出一种不同的方法,如果它在 Windows 上:

import ctypes
ucrtbase = ctypes.CDLL('ucrtbase')
c_raise = ucrtbase['raise']
c_raise(some_signal)

'some_signal' 可以是任何信号编号,例如signal.SIGINT.

于 2018-07-01T11:03:22.300 回答