यहां कोड है जिस पर मैंने SIGABRT
सिग्नल के लिए अपना हैंडलर सेट किया है, तो मैं abort()
पर कॉल करता हूं लेकिन हैंडलर ट्रिगर नहीं होता है, बल्कि प्रोग्राम निरस्त हो जाता है, क्यों?एसआईजीएबीआरटी सिग्नल को कैसे संभालें?
#include <iostream>
#include <csignal>
using namespace std;
void Triger(int x)
{
cout << "Function triger" << endl;
}
int main()
{
signal(SIGABRT, Triger);
abort();
cin.ignore();
return 0;
}
कार्यक्रम उत्पादन:
निर्माण पूरी तरह से आप संदेश मिलता है, यहां, '' शामिल करने के बाद। कौन सा प्लेटफ़ॉर्म? –
एमएसवीसी ++ 2010 के साथ विंडोज 7 एक्स 64 (विजुअल स्टूडियो में सीएसटीडीआईबीबी शामिल करने की आवश्यकता नहीं है) – codekiddy
ठीक है, प्रोग्राम को तब तक निरस्त किया जाना चाहिए जब तक कि सिग्नल हैंडलर 'longjmp' नहीं करते। अगर आप इससे पहले संदेश मुद्रित करना चाहते हैं, तो आप 'std :: cout' (या 'std :: cerr'' पर लिखना चाहेंगे। –