एक सामान्य नियम के रूप में, आपको हमेशा सी पुस्तकालय संस्करण का उपयोग करना चाहिए। उनके पास अक्सर रैपर होते हैं जो गूढ़ चीजों को संभालते हैं जैसे सिग्नल पर पुनरारंभ होता है (यदि आपने अनुरोध किया है)। यह विशेष रूप से सच है यदि आप पहले ही लाइब्रेरी से जुड़े हुए हैं। सभी नियमों को तोड़ने के कारण हैं। प्रत्यक्ष कॉल का उपयोग करने के कारण,
- आप
libc
अज्ञेयवादी बनना चाहते हैं; शायद एक इंस्टॉलर के साथ। इस तरह के कोड एंड्रॉइड (bionic), uClibc, और अधिक पारंपरिक glibc/eglibc सिस्टम पर चलाया जा सकता है, लाइब्रेरी का उपयोग किए बिना। इसके अलावा, एक दोहरी एंड्रॉइड/लिनक्स बाइनरी की अनुमति देने के लिए एक रन-टाइम ग्लिब/बायोनिक परत बनाने के लिए रैपर के साथ गतिशील लोडिंग।
- आपको अत्यधिक प्रदर्शन की आवश्यकता है। हालांकि यह शायद दुर्लभ है और सबसे अधिक संभावना गुमराह है।शायद समस्या पर पुनर्विचार बेहतर प्रदर्शन लाभ प्रदान करेगा और सिस्टम को कॉल करना अक्सर एक प्रदर्शन जीत है, जो
libc
कभी-कभी कर सकता है।
- आप लाइब्रेरी के बिना कुछ
initramfs
या init
कोड लिख रहे हैं; एक छोटी छवि बनाने या तेजी से बूट करने के लिए।
- आप एक नए कर्नेल/प्लेटफार्म का परीक्षण कर रहे हैं और पूर्ण उड़ा फाइल सिस्टम के साथ जीवन जटिल नहीं करना चाहते हैं;
initramfs
के समान ही।
- आप प्रोग्राम स्टार्टअप पर बहुत कुछ करना चाहते हैं, लेकिन आखिरकार
libc
दिनचर्या का उपयोग करना चाहते हैं।
libc
में ज्ञात बग से बचने के लिए।
- कार्यक्षमता
libc
के माध्यम से उपलब्ध नहीं है।
क्षमा करें, अधिकांश उदाहरण लिनक्स विशिष्ट हैं, लेकिन राशन अन्य यूनिक्स रूपों पर लागू होना चाहिए। आखिरी वस्तु काफी आम है जब कर्नेल में नई विशेषताएं पेश की जाती हैं। उदाहरण के लिए जब kqueue
या epoll
जहां पहली बार पेश किया गया था, तो उन्हें समर्थन देने के लिए libc
नहीं था। यह तब भी हो सकता है जब सिस्टम की पुरानी लाइब्रेरी है, लेकिन एक नया कर्नेल और आप इस कार्यक्षमता का उपयोग करना चाहते हैं।
यदि आपकी प्रक्रिया ने libc
का उपयोग नहीं किया है, तो संभवतः सिस्टम में कुछ ऐसा होगा। अपने स्वयं के रूपों को कोड करके, आप एक ही अंत लक्ष्य के लिए दो पथ प्रदान करके कैश को अस्वीकार कर सकते हैं। इसके अलावा, यूनिक्स प्रक्रियाओं के बीच कोड पृष्ठों को साझा करेगा। आम तौर पर libc
संस्करण का उपयोग न करने का कोई कारण नहीं है।
अन्य उत्तरों पहले से ही libc
और सिस्टम कॉल के बीच अंतर पर एक तारकीय नौकरी कर चुके हैं।
स्रोत
2013-03-24 04:45:43
भयानक तस्वीर। बहुत साफ़ – henryyao