मेरे पास एक ऐसा एप्लिकेशन है जिसका उपयोग मैं किसी सेगमेंटेशन गलती या ctrl-c को पकड़ने के लिए करता हूं। नीचे दिए गए कोड का उपयोग करके, मैं सेगमेंटेशन गलती को पकड़ने में सक्षम हूं लेकिन हैंडलर को बार-बार कहा जा रहा है। मैं उन्हें कैसे रोक सकता हूं। आपकी जानकारी के लिए, मैं अपने आवेदन से बाहर निकलना नहीं चाहता हूं। मैं बस सभी दूषित बफर को मुक्त करने का ख्याल रख सकता हूं।सेगमेंटेशन गल हैंडलिंग
क्या यह संभव है?
void SignalInit(void)
{
struct sigaction sigIntHandler;
sigIntHandler.sa_handler = mysighandler;
sigemptyset(&sigIntHandler.sa_mask);
sigIntHandler.sa_flags = 0;
sigaction(SIGINT, &sigIntHandler, NULL);
sigaction(SIGSEGV, &sigIntHandler, NULL);
}
और हैंडलर इस तरह से चला जाता है।
void mysighandler()
{
MyfreeBuffers(); /*related to my applciation*/
}
विभाजन गलती संकेत के लिए यहाँ, हैंडलर कई बार और के रूप में स्पष्ट MyfreeBuffers() कहा जाता है की जा रही है मुझे पहले से ही मुक्त कर दिया स्मृति को मुक्त कराने के लिए त्रुटियों को देता है। मैं सिर्फ एक बार मुक्त करना चाहता हूं लेकिन अभी भी आवेदन से बाहर निकलना नहीं चाहता हूं।
कृपया मदद करें।
यह एक अच्छा समाधान है। मुझे विशेष रूप से पसंद नहीं आया "इसे क्रैश करने दें और फिर कोर डंप का विश्लेषण करें।" – dturvene