python - gevent主线程不能捕捉到SIGQUIT。
本文介绍了python - gevent主线程不能捕捉到SIGQUIT。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
# -- coding:utf-8 --
from __future__ import print_function
import gevent
import signal
def run_forever():
gevent.sleep(1000)
if __name__ == '__main__':
gevent.signal(signal.SIGQUIT, lambda x: print('Caught 3.'))
thread = gevent.spawn(run_forever)
thread.join()
尝试向其发送SIGQUIT信号,但似乎进程并没有收到,why?
问题来源:http://sdiehl.github.io/geven... (关于Program Shutdown)
解决方案
看看你怎么发?
另外,你代码是有问题的.
补充:
import gevent
import signal
def run_forever():
print('running..')
gevent.sleep(1000)
def handler_sigquit():
print ('Got SIGQUIT')
gevent.kill(gevent.getcurrent())
gevent.sleep(0)
if __name__ == '__main__':
gevent.signal(signal.SIGQUIT, handler_sigquit)
thread = gevent.spawn(run_forever)
thread.join()
测试代码是没有问题的,gevent.signal
跟 signal.signal
略有不同, gevent.signal
的handler是不接受参数的。http://sdiehl.github.io/geven... 这里的案例是错误的。
再次补充
handler
也是一个greenlet。
这篇关于python - gevent主线程不能捕捉到SIGQUIT。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文