我有一个Python程序在"syslog-ng -Fevd“OSEV3.8中运行,所以我可以从命令行快速开发。我的信号处理程序在从命令行运行时捕获control-C (我假设还有其他信号),但在syslog-ng中却没有。是否知道在syslog-ng中将信号传播到Python?我是Python的新手,是不是弄错了?
#Start of syslog-ng python config
python {
def handler(signum, frame):
print 'Signal handler called with signal', signum
stopSubscription()
signal.signal(signal.SIGALRM, handler)
signal.signal(signal.SIGINT, handler)
signal.signal(signal.SIGABRT, handler)
signal.signal(signal.SIGHUP, handler)
signal.signal(signal.SIGTERM, handler)
signal.signal(signal.SIGBUS, handler)
signal.signal(signal.SIGCHLD, handler)
signal.signal(signal.SIGCLD, handler)
def stopSubscription():
print "shutdown requested"
}; # end of syslog-ng block从命令行(control-C)和PyCharm内部(停止按钮)我得到
信号处理程序已调用,已请求信号2关闭
但是来自syslog-ng的是板球。
发布于 2017-02-16 18:04:08
您在Python代码中犯了一个错误。您必须导入信号模块才能注册您的函数。
然而,修复代码并不能解决您的问题。如果在Python中注册处理程序,似乎信号既不会被转发到Python,也不会被转发到syslog-ng的信号处理程序。
https://stackoverflow.com/questions/42258990
复制相似问题