प्रत्येक सॉकेट में क्या और कहाँ फ़ाइल है?
“सब कुछ एक अतिशयोक्ति है। यह एक सख्त नीति नहीं है, फाइल सिस्टम के लिए सिस्टम कॉल का पर्यायवाची के रूप में इंटरफेस के लिए फाइल सिस्टम का उपयोग करना सिर्फ एक आम बात है (यानी, फाइलसिस्टम वास्तव में कर्नेल के साथ एक इंटरफेस है, और इसलिए सभी प्रकार की चीजों के लिए एक सुविधाजनक प्रारूप प्रदान करता है) । अन्य ऑपरेटिंग सिस्टम इसका अधिक उपयोग नहीं करते हैं, इसलिए इसे एक विशिष्ट विशेषता माना जाता है।
जैसा कि हाउक लैजिंग का उल्लेख है, "यूनिक्स स्थानीय" सॉकेट्स में एक फ़ाइल नोड है जैसा कि पाइप (देखें man fifo
) का नाम है । हालांकि, इंटरनेट प्रोटोकॉल सॉकेट (नेटवर्क संचार के लिए उपयोग किया जाता है) नहीं करते हैं। इसके बजाय, वे पोर्ट नंबर के साथ यूजरस्पेस में जुड़े हुए हैं। ध्यान दें कि सिंगल पोर्ट पर एक सर्वर सॉकेट प्रत्येक क्लाइंट को उनके अलग-अलग सॉकेट से जोड़ता है (एक एकल यूनिक्स स्थानीय सॉकेट फ़ाइल का उपयोग इस तरह भी किया जा सकता है कि सर्वर, अर्थ, एक ही फ़ाइल पते से जुड़े कई सॉकेट हो सकते हैं) और कोड में वे अलग-अलग संख्यात्मक फ़ाइल विवरणकर्ताओं के माध्यम से व्यक्तिगत रूप से पहचाने जाते हैं ।
तो, इस संदर्भ में सभी सॉकेट हैं फ़ाइलों की तरह है, और में एक कड़ी है /proc/[pid]/fd/
। आप readlink()
इस इनोड पर कॉल भी कर सकते हैं और एक विशेष प्रकार का फ़ाइल नाम प्राप्त कर सकते हैं , जिसका उपयोग कमांड लाइन टूल में किया जाता है जैसे कि lsof
, मेरा मानना है; इसी तरह आप सॉकेट डिस्क्रिप्टर के माध्यम से जानकारी प्राप्त कर सकते हैं fstat()
।