zoukankan      html  css  js  c++  java
  • python 处理 Ctrl+c 方法

    参考地址:http://blog.sina.com.cn/s/blog_60bf8fe901017x12.html

    以下while 循环,在运行的时候会一直占着终端,且不接收正常输入,那有什么办法呢?大家伙可能会立马想到Ctrl+c 直接停掉,诚然,这样是ok的,没有问题.

    #!/usr/local/bin/python
    #-*- coding: utf-8 -*-
    
    while True:
        print "start ............"

    但问题来了:

        如果一个程序,他要做2件事,一件就是不断滚动输出结果,另外一件则是可接受输入操作,且2件事需在一个进程下可交互进行,那怎么办呢?算了,直接上解决方法,让python 直接处Ctrl+c 信号处理成符合我们需要的情形

    #!/usr/local/bin/python
    #-*- coding: utf-8 -*-
    import re,sys
    import string
    import signal
    
    def sigint_handler(signum, frame):
      global is_sigint_up
      is_sigint_up = True
      print 'catched interrupt signal!'
    
    signal.signal(signal.SIGINT, sigint_handler)
    signal.signal(signal.SIGHUP, sigint_handler)
    signal.signal(signal.SIGTERM, sigint_handler)
    is_sigint_up = False
    while True:
      try:
        # 你想做的事情
        import time
        print "start ............."
        time.sleep(2)
        if is_sigint_up:
          # 中断时需要处理的代码
          print "Exit"
          is_sigint_up = False
          continue
      except Excepting,e:
        break
  • 相关阅读:
    我的第一篇博客
    文献笔记5
    文献笔记4
    文献笔记8
    文献笔记6
    文献笔记10
    文献笔记7
    文献笔记1
    文献笔记2
    文献笔记3
  • 原文地址:https://www.cnblogs.com/houkl/p/5149207.html
Copyright © 2011-2022 走看看