मैं एक छोटी पुस्तकालय लिख रहा हूं जो इनपुट के रूप में एक FILE * सूचक लेता है।क्या मेरी लाइब्रेरी खराब सूचक इनपुट पर SIGSEGV को संभालना चाहिए?
यदि मैं तुरंत इस फ़ाइल * सूचक की जांच करता हूं और पाते हैं कि यह एक सेगफॉल्ट की ओर जाता है, तो सिग्नल को संभालने, इरनो सेट करने और गहराई से बाहर निकलने के लिए यह सही है; या कुछ भी करने के लिए और कॉलर के स्थापित सिग्नल हैंडलर का उपयोग करें, अगर उसके पास कोई है?
प्रचलित ज्ञान "पुस्तकालयों को कभी भी दुर्घटना का कारण नहीं बनना चाहिए।" लेकिन मेरी सोच यह है कि, चूंकि यह विशेष संकेत निश्चित रूप से कॉलर की गलती है, इसलिए मुझे उस जानकारी को छिपाने का प्रयास नहीं करना चाहिए। वह अपने स्वयं के हैंडलर को अपने तरीके से समस्या पर प्रतिक्रिया करने के लिए स्थापित कर सकता है। एक ही जानकारी को इरनो के साथ पुनर्प्राप्त किया जा सकता है, लेकिन एसआईजीएसईजीवी के लिए डिफ़ॉल्ट स्वभाव एक अच्छे कारण के लिए सेट किया गया था, और सिग्नल पास करने से इस दर्शन का सम्मान किया जाता है या तो कॉलर को उसकी त्रुटियों को संभालने के लिए मजबूर किया जा सकता है, या दुर्घटनाग्रस्त होकर उसे और नुकसान से बचाया जा सकता है ।
क्या आप इस विश्लेषण से सहमत होंगे, या आप इस स्थिति में SIGSEGV को संभालने के लिए कुछ अनिवार्य कारण देखते हैं?
AFAIK मानक सी लाइब्रेरी क्रैश को संभाल नहीं पाती है, आपकी lib को क्यों चाहिए? हालांकि मुझे लगता है कि यह इस बात पर निर्भर करता है कि आप अपनी lib के साथ क्या करने की योजना बना रहे हैं। (फ़ाइल पर चेक कैसे करता है * एक SIGSEV btw की ओर जाता है? बस उत्सुक) – BigMike