如何在python中接收自定义信号?

时间:2017-01-31 14:45:29

标签: python linux raspberry-pi signals

我正在编写一个python程序(在Linux中,在Raspberry Pi上)作为守护进程运行(使用python-daemon),我理解'跑步者'组件will soon be deprecated

出于这个原因,我希望守护进程对信号作出反应 - 我打算使用SIGUSR1SIGUSR2

但是,我希望它对超过2个信号作出反应。

如何创建,接收和响应自定义信号 - 即SIGUSR3

这已经从software engineering stackexchange重新发布,因为它被视为非主题'。

2 个答案:

答案 0 :(得分:1)

使用signal模块。从其文档https://docs.python.org/2/library/signal.html,一个示例(确保打开不会永远挂起,而是将警报信号转换为Python IOError异常)

import signal, os

def handler(signum, frame):
    print 'Signal handler called with signal', signum
    raise IOError("Couldn't open device!")

# Set the signal handler and a 5-second alarm
signal.signal(signal.SIGALRM, handler)
signal.alarm(5)

# This open() may hang indefinitely
fd = os.open('/dev/ttyS0', os.O_RDWR)

signal.alarm(0)          # Disable the alarm

答案 1 :(得分:0)

nhoods