2011-08-09 14 views
6

क्या वैसे भी मैं अपनी स्क्रिप्ट को अपने कार्यों में से एक निष्पादित कर सकता हूं जब Ctrl+c स्क्रिप्ट चलने पर हिट हो जाती है?मैं कीबोर्ड इंटरप्ट को ओवरराइड कैसे कर सकता हूं? (पायथन)

+0

कई विकल्प के लिए http://stackoverflow.com/questions/4205317/capture-keyboardinterrupt-in-python-without-try-except देखें। – DSM

उत्तर

18

signal handlers पर एक नज़र डालें। CTRL-C SIGINT (पॉज़िक्स सिस्टम पर सिग्नल # 2) से मेल खाता है।

उदाहरण:

#!/usr/bin/env python 
import signal 
import sys 
def signal_handler(signal, frame): 
    print 'You pressed Ctrl+C - or killed me with -2' 
    sys.exit(0) 
signal.signal(signal.SIGINT, signal_handler) 
print 'Press Ctrl+C' 
signal.pause() 
+0

नोट: जब आप ओएस – wim

+0

@wim में 'kill -2 [pid]' पर जाते हैं, तो इस सिग्नल हैंडलर को भी हिट करना चाहिए, अच्छा बिंदु, धन्यवाद, मेरे उत्तर में एक संकेत जोड़ा - वास्तव में एक हत्या को अलग करने का एक तरीका है मारने से मारने से कीबोर्ड द्वारा? – miku

+1

मैंने देखा है कि पूर्व पाइथन में 'कीबोर्डइंटरप्ट' अपवाद उठाएगा, बाद वाला नहीं होगा। लेकिन मुझे यह क्यों नहीं है कि कार्यान्वयन के विवरण पर यह सुनिश्चित नहीं है। – wim

5

निश्चित रूप से।

try: 
    # Your normal block of code 
except KeyboardInterrupt: 
    # Your code which is executed when CTRL+C is pressed. 
finally: 
    # Your code which is always executed. 
संबंधित मुद्दे