सी में Ctrl-C इवेंट को इंटरसेप्ट करना
Ctrl-C इवेंट को इंटरसेप्ट करना प्रोग्रामिंग में एक आवश्यक कार्य है, खासकर जब आप शालीनता से जवाब देना चाहते हैं अप्रत्याशित रुकावटें.
सिगेक्शन का उपयोग करना
सी में, सिग्नल को संभालने के लिए सिगेक्शन फ़ंक्शन का उपयोग करना अधिक विश्वसनीय है। सिंटैक्स इस प्रकार है:
int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
कहां:
थॉमस द्वारा दिए गए उदाहरण में, सिगेक्शन संरचना इस प्रकार है:
struct sigaction sigIntHandler; sigIntHandler.sa_handler = my_handler; sigemptyset(&sigIntHandler.sa_mask); sigIntHandler.sa_flags = 0;
कहाँ:
SIGINT सिग्नल के साथ इस सिगेक्शन संरचना का उपयोग करें:
sigaction(SIGINT, &sigIntHandler, NULL);
Handler function
आखिरकार, आपको सिग्नल का जवाब देने के लिए एक हैंडलर फ़ंक्शन की आवश्यकता है। उदाहरण में, my_handler बस एक संदेश प्रिंट करता है और प्रोग्राम से बाहर निकल जाता है:
void my_handler(int s){ printf("Caught signal %d\n", s); exit(1); }
पूर्ण कोड
निम्नलिखित संपूर्ण कोड है जो Ctrl-C ईवेंट को कैप्चर करने के लिए सिगेक्शन का उपयोग करता है:
#include#include #include #include void my_handler(int s){ printf("Caught signal %d\n",s); exit(1); } int main(int argc,char** argv) { struct sigaction sigIntHandler; sigIntHandler.sa_handler = my_handler; sigemptyset(&sigIntHandler.sa_mask); sigIntHandler.sa_flags = 0; sigaction(SIGINT, &sigIntHandler, NULL); pause(); return 0; }
सिगेक्शन का उपयोग करके आप विश्वसनीय रूप से Ctrl-C घटनाओं को पकड़ सकते हैं और उचित कार्रवाई कर सकते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3