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
  • 相关阅读:
    TCP重传
    GIT常用命令参考图
    nodepad++ 快捷键加常用操作
    Django学习之manage.py使用
    Python遍历目录
    Pycharm 2017 12月最新激活码
    Python 基础之列表去重的几种玩法
    ddos cc攻击简单介绍(转)
    linux升级python版本至3
    linux解压xxx.tar.xz文件
  • 原文地址:https://www.cnblogs.com/awakenjoys/p/supervisord_python.html
Copyright © 2011-2022 走看看