zoukankan      html  css  js  c++  java
  • python信号处理

    有两个信号在python中是无法处理和更改的:SIGTOP和SIGKILL,之前想到用supervisord管理tomcat进程,我们向代理程序发送这个信号并拦截的思路不能实现。

    会提示以下错误:

    hartnettmatoMacBook-Pro:python hartnett$ python signal.py 
    Traceback (most recent call last):
      File "signal.py", line 10, in <module>
        signal.signal(signal.SIGKILL, functionA)
    RuntimeError: (22, 'Invalid argument')

    检查一下这个错误:

    >>> import errno
    >>> errno.errorcode[22]
    'EINVAL' //指定的信号sig无效

    但是我们可以发送利用supervisord向代理程序发送SIGQUIT信号,测试代码如下:

    hartnettmatoMacBook-Pro:python hartnett$ cat signal.py 
    import signal
    import os
    import time
    
    def killself(signalnum, frame):
        print signalnum
        os.kill(os.getpid(), signal.SIGKILL)
    
    signal.signal(signal.SIGQUIT,killself)
    
    while True:
        time.sleep(100)

    向这个进程发送信号3(SIGQUIT)后,确认该进程可捕获信号,并完成我们特定的指令,效果如下所示:

    hartnettmatoMacBook-Pro:python hartnett$ python signal.py 
    3
    Killed: 9
  • 相关阅读:
    Models(Pascal)
    Summer Plan(挖坑待填)
    C++之指针
    QuickPower快速幂
    codevs 1231最优布线问题
    颓废了1年+,今天开始勤(tui)奋(fei)啦
    l'Hopital法则
    相律
    小意外
    一种改进的动力学处理方法
  • 原文地址:https://www.cnblogs.com/awakenjoys/p/supervisord_python.html
Copyright © 2011-2022 走看看