2011-03-16 15 views
5

मुझे अपने प्रोग्राम में getchar() के लिए टाइमआउट फ़ंक्शन जोड़ने की आवश्यकता है।getchar के लिए एक टाइमआउट जोड़ें()

मैं ऐसा क्यों करता हूं जब मेरा प्रोग्राम निर्देश प्राप्तकर्ता() तक पहुंच जाए, तो यह केवल उपयोगकर्ता के लिए एक कीस्ट्रोक बनाने के लिए निश्चित समय की प्रतीक्षा करेगा और यदि उपयोगकर्ता दिए गए समय के भीतर कोई कीस्ट्रोक नहीं बनाता है सीमा, कार्यक्रम getchar() "छोड़" जाएगा?

ऑपरेटिंग सिस्टम conio.h लाइब्रेरी का समर्थन नहीं करता है इसलिए kbhit एक विकल्प नहीं है।

उत्तर

5

यह आमतौर पर stdin पर उपयोग करके हासिल किया जाता है। एक और समाधान alarm() और एक डमी SIGALRM हैंडलर का उपयोग getchar() कॉल को बाधित करने के लिए करेगा (हालांकि केवल POSIX सिस्टम पर काम कर रहा है)।

+0

मुझे लगता है कि अलार्म() को चाल चलनी चाहिए। समस्या यह है कि ... मुझे नहीं पता कि अलार्म() का उपयोग कैसे करें! क्या आप getchar() के साथ अलार्म() का उपयोग करने के किसी प्रकार का उदाहरण पोस्ट कर सकते हैं? मुझे Google से कुछ भी नहीं मिल रहा है। – brain56

+1

आप अपने 'getchar()' कॉल से पहले 'अलार्म (अवधि);' बस कॉल करें। साथ ही, 'सिग्नल (SIGALRM, your_handler_func) का उपयोग करके एक डमी सिंडलर इंस्टॉल करें;' इसलिए अलार्म सिग्नल आपके प्रोग्राम को नहीं मारता है। – ThiefMaster