क्या पॉज़िक्स मानक या कोई अन्य मानक मानक सिग्नल नंबर से सार्थक संदेश पुनर्प्राप्त करने का एक तरीका प्रदान करता है, उसी तरह strerror()
errno
से एक संदेश पुनर्प्राप्त करना संभव बनाता है? जीएनयू सी लाइब्रेरी में strsignal()
है, लेकिन यदि संभव हो, तो मुझे बीएसडी और अन्य यूनिक्स रूपों के लिए पोर्टेबल कुछ चाहिए।मुझे सिग्नल नंबर से मानव-पठनीय विवरण कैसे प्राप्त किया जा सकता है?
उत्तर
हां, दिलचस्प बात यह है कि पॉज़िक्स में सिग्नल से स्ट्रिंग संदेश प्राप्त करने का एक मानक तरीका है। यह काफी संयोग से है, strsignal()
। POSIX.1-2008 से:
strsignal() फ़ंक्शन एक कार्यान्वयन-परिभाषित स्ट्रिंग के लिए सिग्नल में सिग्नल नंबर को मैप करेगा और इसमें एक पॉइंटर लौटाएगा। यह संदेश के उसी सेट का उपयोग psignal() फ़ंक्शन के रूप में करेगा।
एक ऐसा वातावरण जो आपको यह कार्य प्रदान नहीं करता है वह POSIX-compliant नहीं है। हालांकि अपेक्षाकृत नया (2008 में अंक 7 आया था), मेरे पास strsignal()
Mac OS X पर एक मैन पेज है, इसलिए यह एक अच्छा संकेत है।
बाहरी परिभाषित सरणी sys_siglist
में प्रत्येक सिग्नल नंबर के लिए सिग्नल विवरण शामिल हैं, और बीएसडी पर मानक समस्या है।
#include <signal.h>
extern const char *const sys_siglist[];
+1 मानक प्रति से नहीं, लेकिन उपयोगी और अधिक सामान्य रूप से पाया जाता है। – pilcrow
धन्यवाद: http://tinyurl.com/d4z9ev जीएनयू मैन पेज, जो कहता है "यह फ़ंक्शन किसी भी मानक का हिस्सा नहीं है", स्पष्ट रूप से अद्यतन करने की आवश्यकता है। –
@ नॉर्मन: एक 'मैन' पृष्ठ को अद्यतन करने की आवश्यकता है? विधर्म! चीयर्स। –