मैं Ctrl + सी सी ++ में ईवेंट कैसे प्राप्त करूं?मैं ctrl-c ईवेंट कैसे पकड़ सकता हूं? (सी ++)
उत्तर
signal
सबसे विश्वसनीय रास्ता के रूप में यह कार्यान्वयन में अलग नहीं है। मैं sigaction
का उपयोग करने की सलाह दूंगा। टॉम का कोड अब इस तरह दिखेगा:
#include <signal.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
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;
}
मुझे लगता है कि my_handler को 'int s' लेना चाहिए क्योंकि यह तर्क है। 'sig_t' स्वयं एक फ़ंक्शन पॉइंटर प्रकार है। –
ओएसएक्स पर काम करना चाहिए। मेरी main.mm फ़ाइल में, मुझे सिग्नल.h, stdlib.h, या unistd.h को भी शामिल करने की आवश्यकता नहीं थी। मैंने अभी stdio.h और फाउंडेशन/फाउंडेशन.h शामिल किया है, और फिर अगर मुझे शटडाउन संदेश आउटपुट के लिए std :: cout stuff करने की आवश्यकता है, तो मैंने iostream शामिल किया था। – Volomike
आप SIGINT signal (हम POSIX बात कर रहे हैं ना?) Sigaction के लिए
देखें @Gab Royer's जवाब को पकड़ने के लिए की है।
उदाहरण:
#include <signal.h>
#include <stdlib.h>
#include <stdio.h>
void my_handler(sig_t s){
printf("Caught signal %d\n",s);
exit(1);
}
int main(int argc,char** argv)
{
signal (SIGINT,my_handler);
while(1);
return 0;
}
हाँ, यह एक मंच निर्भर प्रश्न है।
यदि आप POSIX पर एक कंसोल प्रोग्राम लिख रहे हैं, सिग्नल एपीआई (# शामिल < सिग्नल एच >) का उपयोग करें।
एक WIN32 जीयूआई अनुप्रयोग में आपको WM_KEYDOWN संदेश को संभालना चाहिए।
एक Windows कंसोल अनुप्रयोग के लिए, आप CTRL + सी और CTRL + BREAK संभाल करने SetConsoleCtrlHandler उपयोग करना चाहते हैं।
उदाहरण के लिए here देखें।
- 1. मैं सी # में ईवेंट सदस्यता कैसे साफ़ कर सकता हूं?
- 2. मैं UITableView अनुभाग शीर्षलेख पर स्पर्श ईवेंट कैसे पकड़ सकता हूं?
- 3. मैं इवेंट डिस्पैच थ्रेड (ईडीटी) अपवाद कैसे पकड़ सकता हूं?
- 4. मैं एक अवैध preg_match पैटर्न कैसे पकड़ सकता हूं?
- 5. मेल() के कारण त्रुटि को मैं कैसे पकड़ सकता हूं?
- 6. मैं थिगिंग पायथन प्रोग्राम में सिगिनट कैसे पकड़ सकता हूं?
- 7. मैं सी ++ में पाइथन के कीबोर्ड इंटरप्ट को कैसे पास/पकड़/प्रतिक्रिया दे सकता हूं?
- 8. मैं "पकड़"
- 9. मैं पृष्ठ स्क्रॉलिंग ट्रिगर माउसओवर ईवेंट कैसे बना सकता हूं?
- 10. मैं इस .NET ईवेंट की सदस्यता कैसे ले सकता हूं?
- 11. मैं सभी सेटटाइमआउट ईवेंट को कैसे अक्षम कर सकता हूं?
- 12. मैं किसी ईवेंट पर निर्दिष्ट विधि कैसे बदल सकता हूं?
- 13. मैं सॉकेट.ओओ में बंद ईवेंट कैसे संभाल सकता हूं?
- 14. मैं सी # में एक सामान्य अपवाद क्यों नहीं पकड़ सकता?
- 15. क्या मैं एक ही पकड़ खंड में एकाधिक जावा अपवादों को पकड़ सकता हूं?
- 16. मैं एक कैच ब्लॉक में सभी प्रकार के अपवाद कैसे पकड़ सकता हूं?
- 17. मैं किसी कुंजीडाउन ईवेंट (सी #)
- 18. मैं आईआईएस 7 में अधिकतम आवंटित कॉन्टेंट लम्बाई को कैसे पकड़ और संभाल सकता हूं?
- 19. मैं तत्व पर सभी सीएसएस शैलियों को कैसे पकड़ सकता हूं?
- 20. मैं कक्षा के वैश्विक उदाहरण के निर्माता से अपवाद को कैसे पकड़ सकता हूं?
- 21. क्या मैं सी ++ में नेस्टेड कोशिश-पकड़ ब्लॉक कर सकता हूं?
- 22. क्या मैं सी # में एप्लिकेशन लोड के दौरान एक लापता डीएलएल त्रुटि पकड़ सकता हूं?
- 23. जावा में नवीनतम विकास के साथ मैं सबसे अच्छी तरह से कैसे पकड़ सकता हूं?
- 24. सी में एक स्टैक ट्रेस कैसे पकड़ सकता है?
- 25. मैं सी # में किसी फ़ंक्शन में कोई ईवेंट कैसे पास कर सकता हूं?
- 26. मैं अपने डेस्कटॉप पर पिक्सेल का रंग कैसे पकड़ सकता हूं? (लिनक्स)
- 27. सी ++ "पकड़ (...)" पैरामीटर
- 28. क्या मैं DataGridView.EndEdit सेलविलिडेटिंग ईवेंट को ट्रिगर कर सकता हूं?
- 29. मैं अपने स्थानीय परिवर्तक को कैसे पकड़ सकता हूं और इसे पर्सफोर्स में किसी और को भेज सकता हूं?
- 30. मैं पर्ल में एक कार्प से आउटपुट कैसे पकड़ सकता हूं?
कंसोल एप्लिकेशन, विंडोज़ एप्लिकेशन, या क्या? – GManNickG
कौन सा ओएस विंडोज, लिनक्स, आदि .. – shf301
अच्छा, यह एक क्यूटी ऐप है, लेकिन मैं इसे विकास के दौरान कंसोल से चला रहा हूं। (यह लिनक्स है) – Scott