लिनक्स में कर्नेल मॉड्यूल विकसित करते समय, सी मानक लाइब्रेरी का उपयोग करने की अनुमति नहीं है।
हालांकि, अगर मुझे strcat()
जैसी कुछ सामान्य कार्यक्षमताओं का उपयोग करने की आवश्यकता है, तो मुझे कहां जाना है?stdlib.h विकल्प?
उत्तर
जो भी लिनक्स कर्नेल में लागू नहीं है, आप अपने आप को लागू करने या किसी अन्य मुक्त स्रोत गिरी मॉड्यूल से उधार लेने के लिए किया है। हालांकि, आप पाएंगे कि strcat
कर्नेल में लागू किया गया है।
kernel API दस्तावेज़ीकरण देखें। आपके सामान्य प्रश्न के लिए विशेष रूप से Basic C Library Functions अनुभाग, और strcat
के बारे में अपने विशिष्ट प्रश्न के लिए String Manipulation अनुभाग।
आप linux/string.h
शामिल करना चाहते हैं।
मुझे नहीं पता कि कर्नेल एपीआई दस्तावेज वास्तव में हेडर फ़ाइल क्यों नहीं दिखाता है जिसे आपको फ़ंक्शन प्राप्त करने के लिए शामिल करना है। लेकिन अगर आप कुछ ढूंढ रहे हैं, तो आप अपनी खोज को /include/linux
पर सीमित कर सकते हैं क्योंकि वह है जहां हेडर फाइलें जाती हैं यदि उनके पास कर्नेल के विभिन्न हिस्सों में साझा किए गए फ़ंक्शन हैं।
/include/linux
के बाहर शीर्षलेख फाइलें केवल शीर्षलेख के समान निर्देशिका में मौजूद स्रोत फ़ाइलों के लिए परिभाषाएं हैं। अपवाद /arch/.../include
है, जिसमें प्लेटफ़ॉर्म स्वतंत्र लोगों के बजाय आर्किटेक्चर-विशिष्ट शीर्षलेख होंगे।
क्षमा करें @eq - किसी अन्य फ़ंक्शन की सोच।
क्यों नहीं
void (char *d, const char *s);
{
if (*d)
{
for (; *d; ++d) {} ;
--d;
}
strcpy(d, s);
}
मैं strcpy
कर सकता है यदि आप चाहें
@indiv - ओह सोच सही है। उन कार्यों को ईर्ष्या से पीड़ित किया जा सकता है। –
क्या हम सभी खुश हैं - इसके बावजूद कि एक स्ट्रिंग फ़ंक्शन को लाइब्रेरी की आवश्यकता होती है ?! –
... और लिनक्स कर्नेल सी में लिखा गया है? –
क्या हेडर फाइलों की एक सूची है जिसमें इस तरह के कार्यों को रखा जाता है? (जैसा कि आपने 'linux \ string.h' का उल्लेख किया है) – Fairview
@ फेयरव्यू: ऐसा नहीं है कि मैं पा सकता हूं, जो विषम है। मुझे लगता है कि आपको कर्नेल एपीआई में इच्छित फ़ंक्शन ढूंढना होगा और फिर इसे '/ include/linux' में खोजना होगा। मैंने कर्नेल में हेडर फ़ाइलों के बारे में अपने उत्तर में और विवरण जोड़ा और आप अपनी खोज को '/ include/linux' और इसकी उपनिर्देशिकाओं तक सीमित क्यों कर सकते हैं। – indiv