2009-03-02 27 views
5

में पथ से इनोड प्राप्त करना मैं वर्तमान में कर्नेल फ़ंक्शन में दिए गए पथनाम के लिए एक इनोड प्राप्त करने का प्रयास कर रहा हूं। मेरे पास उपलब्ध है पूर्ण पथनाम है। मैंने प्रयासों की कोशिश की है:लिनक्स कर्नेल

user_path_at(AT_FDCWD, buffer, LOOKUP_FOLLOW, &path); 

लेकिन उस दिए गए पथ में दंत चिकित्सा मान्य नहीं है, ऐसा लगता है कि यह निकलता है। तब मैंने सोचा कि शायद स्टेट() की कोशिश कर रहा है और उस से इनोड नंबर प्राप्त कर रहा है। हालांकि, यह केवल मुझे एक संख्या देता है, एक संरचना इनोड नहीं। मुझे किसी मौजूदा इनोड को पकड़ने और इनोड की पूरी सूची को घुमाने के बिना एक इनोड नंबर को एक इनोड में परिवर्तित करने का तरीका पता नहीं है। और मुझे यह भी नहीं पता कि यह काम करेगा या नहीं। लेकिन मैं निश्चित रूप से ऐसा नहीं करना चाहता हूं।

क्या कर्नेल के अंदर char * pathname से स्ट्रक्चर इनोड प्राप्त करने का कोई आसान तरीका है?

उत्तर

0

कोई आसान तरीका नहीं है क्योंकि संरचना इनोड कर्नेल का हिस्सा है और आप उपयोगकर्ता स्थान में हैं। यह सब विशेष फाइल सिस्टम कार्यान्वयन पर निर्भर करता है। क्या आप सुनिश्चित हैं कि स्टेट स्ट्रक्चर में जानकारी आपकी आवश्यकताओं के लिए पर्याप्त नहीं है?

वैसे भी, this link मदद कर सकता है।

+1

यह सिर्फ मुझे मारा (लगभग 3 घंटे बाद) कि stat() मेरी आवश्यकताओं के लिए पर्याप्त होगा, क्योंकि मुझे केवल जानकारी की आवश्यकता है। मैं इनोड को प्राप्त करने के लिए इतना नरक हो गया कि मैंने आंशिक रूप से मेरे लक्ष्य को खो दिया। और मैं इसे कर्नेल के भीतर से कर रहा हूं। तो प्रदर्शन करने वाला स्टेट() वास्तव में इष्टतम नहीं है, लेकिन करेगा। –

+0

लिंक मर चुका है। यही कारण है कि लिंक केवल जवाब खराब हैं। – MSalters

2

stat() आपको "st_ino" फ़ील्ड में फ़ाइल का इनोड देगा।

क्षमा करें, प्रश्न की प्रारंभिक गलतफहमी।

यदि आप कर्नेल के भीतर वास्तविक इनोड संरचना चाहते हैं, तो मुझे यकीन है कि कर्नेल स्वयं एक सरणी या सूची नहीं चलाएगा जो कि इनोड संख्या की तलाश में है (जब तक कि सूची बहुत छोटी न हो)। चूंकि कर्नेल को कोड सार्वजनिक रूप से उपलब्ध है, इसलिए आप यह पता लगाने में सक्षम होना चाहिए कि यह कैसे करता है, फिर वही करें।

+0

मैंने पहले ही नोट किया है कि मेरी पोस्ट में। हालांकि, यह केवल मुझे इनोड नंबर देता है, न कि फ़ाइल के बारे में जानकारी प्राप्त करने के लिए आवश्यक स्ट्रोड इनोड। –

संबंधित मुद्दे