लिनक्स में कैसे / proc / self कार्यान्वित किया जाता है?


19

मैं /procलिनक्स में फाइल सिस्टम के साथ छेड़छाड़ कर रहा था , और मैं भर में आया था /proc/self, जो वर्तमान प्रक्रिया की प्रक्रिया निर्देशिका का एक प्रतीकात्मक लिंक है। मैं जानना चाहता हूं कि इसे कैसे लागू किया जाता है। एक समाधान यह होगा कि हर संदर्भ स्विच पर उस सिम्लिंक को बदल दिया जाए , लेकिन यह स्पष्ट रूप से बहुत महंगा है क्योंकि इसमें डिस्क का उपयोग शामिल है।

जवाबों:


20

http://lxr.linux.no/linux+v3.2.9/fs/proc/base.c#L2482 वर्तमान कार्यान्वयन है।

procफाइल सिस्टम पूरी तरह से आभासी है, और इसलिए आंतरिक वीएफएस कार्यान्वित किया जाता है readlinkविशेष सिमलिंक के लिए सही जगह पर प्रतिनिधियों। इसलिए, यह गणना करता है कि selfजब यह पढ़ा जाए / ट्रेस किया जाए, तो हर संदर्भ स्विच के लिए कौन से बिंदु हैं।


12

फ़ाइलों को /procडिस्क पर संग्रहीत नहीं किया जाता है, वे कर्नेल द्वारा मक्खी पर उत्पन्न होते हैं। देखें कि क्या होता है जब मैं खोलता / पढ़ता / खरीदती हूं?

आप प्रोग्राम इच्छुक रहे हैं, तो आप के कार्यान्वयन पढ़ सकते /procमें गिरी स्रोत कोड/proc/selfप्रतीकात्मक लिंक की सामग्री एक फ़ंक्शन द्वारा उत्पन्न होती है जो कॉलिंग प्रक्रिया के पीआईडी ​​के साथ एक बफर भरती है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.