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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM