यह प्रश्न में पाइप या सॉकेट के लिए इनोड नंबर है।
एक पाइप एक यूनिडायरेक्शनल चैनल है, जिसमें एक लेखन अंत और एक रीड एंड है। आपके उदाहरण में, ऐसा लगता है कि एफडी 5 और एफडी 6 एक दूसरे से बात कर रहे हैं, क्योंकि इनोड नंबर समान हैं। (शायद नहीं, हालांकि नीचे देखें।)
एक पाइप पर खुद से बात करने वाले प्रोग्राम को देखने से ज्यादा आम है अलग-अलग प्रोग्राम की एक जोड़ी एक दूसरे से बात करते हुए, आमतौर पर क्योंकि आप एक खोल के साथ उनके बीच एक पाइप सेट करते हैं:
shell-1$ ls -lR / | less
फिर एक और टर्मिनल विंडो में:
shell-2$ ...find the ls and less PIDs with ps; say 4242 and 4243 for this example...
shell-2$ ls -l /proc/4242/fd | grep pipe
l-wx------ 1 user user 64 Mar 24 12:18 1 -> pipe:[222536390]
shell-2$ ls -l /proc/4243/fd | grep pipe
l-wx------ 1 user user 64 Mar 24 12:18 0 -> pipe:[222536390]
यह कहता है कि पीआईडी 4242 का मानक आउटपुट (एफडी 1, कन्वेंशन द्वारा) इनोड नंबर 222536390 के साथ एक पाइप से जुड़ा है, और यह कि पीआईडी 4243 का मानक इनपुट (एफडी 0) उसी पाइप से जुड़ा है।
जिनमें से सभी का यह कहने का एक लंबा तरीका है कि ls
आउटपुट को less
इनपुट के लिए भेजा जा रहा है ।
अपने उदाहरण पर वापस जा रहे हैं, एफडी 1 और एफडी 2 लगभग निश्चित रूप से एक दूसरे से बात नहीं कर रहे हैं। सबसे अधिक संभावना है कि यह stdout (FD 1) और stderr (FD 2) को एक साथ बांधने का परिणाम है, इसलिए वे दोनों एक ही गंतव्य पर जाते हैं। आप एक बॉर्न शेल के साथ ऐसा कर सकते हैं:
$ some-program 2>&1 | some-other-program
इसलिए, यदि आपने चारों ओर poked है, तो आपको उदाहरण के /proc/$PID_OF_SOME_OTHER_PROGRAM/fd
लिए FD 1 और 2 के साथ संलग्न होने के साथ ही इनकोड संख्या के साथ एक पाइप से जुड़ा तीसरा एफडी मिलेगा some-program
। यह आपके उदाहरण में एफडी 5 और 6 के साथ भी हो सकता है, लेकिन मेरे पास कोई तैयार सिद्धांत नहीं है कि ये दोनों एफडी एक साथ कैसे बंधे। आपको यह जानना होगा कि यह पता लगाने के लिए कार्यक्रम आंतरिक रूप से क्या कर रहा है।
pidgin
यह पाइप और सॉकेट और अन्य सामान था, इसलिए यह एक अच्छा उदाहरण था। एक अंतिम प्रश्न: इनकोड केवल एक विशेष फाइलसिस्टम के संदर्भ में विशिष्ट हैं, सही? जैसा कि, मैं अपने/
फाइल सिस्टम पर इनकोड 3 , और मेरे फाइल सिस्टम पर एक और (अलग) इनोड 3 रख सकता था/boot
।