2011-10-01 8 views
9

आज सुबह मैंने अपने सर्वर प्रोग्राम में कीबोर्ड इंटरप्ट को संभालने का फैसला किया और कृपापूर्वक बाहर निकलें। मुझे पता है कि यह कैसे करना है, लेकिन मेरे परिष्कृत आत्म को यह पर्याप्त रूप से पर्याप्त नहीं मिला कि ^C अभी भी मुद्रित हो जाता है। मैं ^C मुद्रित होने से कैसे बचूं?कीबोर्ड से बचने के बाद मुद्रित होने के लिए^सी से कैसे बचें

import sys 
from time import sleep 
try: 
    sleep(5) 
except KeyboardInterrupt, ke: 
    sys.exit(0) 

Ctrl + C दबाएं उपरोक्त कार्यक्रम से बाहर निकलने के लिए और देखने के ^C मुद्रित हो रही है। क्या कुछ sys.stdout या sys.stdin जादू का उपयोग कर सकते हैं?

+0

आप [ 'curses' पैकेज] में कुछ (का उपयोग कर की कोशिश कर सकते http://docs.python.org/library/curses एचटीएमएल), लेकिन मुझे नहीं लगता कि यह छोटा है (यदि यह संभव है)। विंडोज़ पर –

+0

मुझे^सी नहीं दिखाई देता है। – akonsu

+1

मैं बैश और सीएसएच पर सी मुद्रित आउट देखता हूं, यह या तो गोले में या कम (कर्नेल) स्तर पर कुछ समेकित है। –

उत्तर

0

यह कम से कम लिनक्स में, चाल क्या करेंगे

#! /usr/bin/env python 
import sys 
import termios 
import copy 
from time import sleep 

fd = sys.stdin.fileno() 
old = termios.tcgetattr(fd) 
new = copy.deepcopy(old) 
new[3] = new[3] & ~termios.ECHO 

try: 
    termios.tcsetattr(fd, termios.TCSADRAIN, new) 
    sleep(5) 
except KeyboardInterrupt, ke: 
    pass 
finally: 
    termios.tcsetattr(fd, termios.TCSADRAIN, old) 
    sys.exit(0) 
7

यह आपका खोल है कि, पाइथन के पास इसके साथ कुछ लेना देना नहीं है।

आप ~/.inputrc में निम्न पंक्ति डालें, तो वह उस व्यवहार को दबाने होगा:

set echo-control-characters off 
बेशक

, मैं तुम्हें बैश जो मामले नहीं हो सकता है का उपयोग कर रहे संभालने हूँ।

0
try: 
    while True: 
     pass 
except KeyboardInterrupt: 
    print "\r " 
संबंधित मुद्दे