प्रोग्रामिंग में जब कोई प्रोग्राम टर्मिनल कंपाइलर में खराबी से चलता है तो प्रोग्रामर के पास प्रोग्राम को स्पष्ट रूप से रोकने की शक्ति होती है। प्रोग्राम को स्पष्ट रूप से रोकने के लिए, उपयोगकर्ता को सही कीबोर्ड शॉर्टकट पता होना चाहिए जिसे दबाने की आवश्यकता है।
कोड के ब्लॉक को समाप्त करने के लिए, दो प्रकार के कीबोर्ड शॉर्टकट उपयोग किए जाते हैं।
Ctrl+C − यह प्रोग्राम के निष्पादन को रोकने के लिए उपयोग किया जाता है, यह I/O ऑपरेशन पूरा करने में थोड़ा समय लेता है और फिर निष्पादन को सस्पेंड करता है। यह प्रक्रिया को SIGINT सिग्नल भेजता है जो समाप्त हो जाता है। कुछ भाषाओं में, इस SIGINT को संभालने के तरीके हैं जैसे C में सिग्नल फंक्शन।
Ctrl+Z − यह प्रोग्राम के निष्पादन को रोकने के लिए उपयोग किया जाता है, प्रक्रिया से संबंधित सभी कार्य बंद हो जाते हैं और निष्पादन सस्पेंड हो जाता है। यह प्रक्रिया को SIGTSTP सिग्नल भेजता है जो प्रोग्राम को समाप्त करता है, हालांकि कार्यान्वयन समान है लेकिन यह सिग्नल दूसरों की तुलना में अधिक शक्तिशाली है। इसे भी संभाला जा सकता है।
यहां, हम एक ऐसा कोड लिखेंगे जो ctrl+z कॉल को पार कर सके। और सस्पेंड होने के बजाय प्रोग्राम "ctrl+z cannot suspend this code" प्रिंट करेगा।
जैसा कि ऊपर चर्चा की गई है, ctrl+z कॉल को C प्रोग्रामिंग भाषा में संभाला जा सकता है। जब प्रोग्राम की प्रक्रिया को समाप्त करने के लिए SIGTSTP सिग्नल लागू किया जाता है। हम इस सिग्नल के कार्य को पुनः परिभाषित करेंगे ताकि यह कोड को समाप्त न करे और उपयोग किए जाने पर एक लाइन प्रिंट करे।
इस प्रकार की चीजों को संभालने के लिए signal() मेथड का उपयोग किया जाता है।
उदाहरण
#include <stdio.h>
#include <signal.h>
void signalhandler(int sig_num){
signal(SIGTSTP, signalhandler);
printf("Cannot execute Ctrl+Z\n");
}
int main(){
int a = 1;
signal(SIGTSTP, signalhandler);
while(a){
}
return 0;
}
आउटपुट
// एक अनंत लूप