मुझे लगता है कि बैश प्रलेखन इस विषय पर कुछ भ्रामक है। कोड को देखते हुए, यहां तक कि संस्करण 2.04 पर वापस जाना जहां नेटवर्क पुनर्निर्देशन पेश किया गया था, /dev/tcp
और /dev/udp
निम्नानुसार काम करता है:
- निर्माण के समय,
configure
स्क्रिप्ट यह देखने के लिए जांच करती है कि क्या विभिन्न नेटवर्किंग सुविधाएँ समर्थित हैं; यदि ऐसा है, तो यदि नेटवर्क पुनर्निर्देशन सक्षम है (जो डिफ़ॉल्ट रूप से मामला है), आंतरिक नेटवर्किंग कोड में बनाया गया है;
- रन टाइम के दौरान, यदि आंतरिक नेटवर्किंग कोड बनाया गया है,
/dev/tcp
और /dev/udp
(सही प्रारूप में) आंतरिक रूप से नियंत्रित किया जाता है; अन्यथा, एक चेतावनी का उत्पादन किया जाता है ("/ dev / (tcp | udp) / होस्ट / पोर्ट नेटवर्किंग के बिना समर्थित नहीं है") और बैश सिस्टम पर दिए गए मार्ग को खोलने का प्रयास करता है;
- यदि नेटवर्क पुनर्निर्देशन को कॉन्फ़िगर किया गया है, तो कुछ विशेष नहीं किया जाता है।
यह क्या है:
- यदि नेटवर्क पुनर्निर्देशन सक्षम है:
- यदि नेटवर्किंग लक्ष्य प्लेटफ़ॉर्म पर समर्थित है,
/dev/tcp
और /dev/udp
हमेशा आंतरिक रूप से नियंत्रित किया जाएगा;
- अन्यथा, बैश चेतावनी देगा और फ़ाइल को "नेत्रहीन" खोलने की कोशिश करेगा; यदि सिस्टम किसी तरह का समर्थन करता है
/dev/(tcp|udp)/host/port
, तो इसका उपयोग किया जाएगा, अन्यथा सभी संभावना में पुनर्निर्देशन विफल हो जाएगा;
- यदि नेटवर्क पुनर्निर्देशन अक्षम है, तो कोई विशेष हैंडलिंग नहीं की जाती है; ऊपर के रूप में, यदि सिस्टम किसी तरह का समर्थन करता है
/dev/(tcp|udp)/host/port
, तो इसका उपयोग किया जाएगा, अन्यथा सभी संभावना में पुनर्निर्देशन विफल हो जाएगा।
/dev/tcp
कुछ प्रणालियों पर मौजूद है, लेकिन जहां तक मुझे पता है कोई भी बैश के समान अमूर्तता का समर्थन नहीं करता है। Solaris पर, नेटवर्क कॉन्फ़िगरेशन को क्वेरी और बदलने के /dev/tcp
लिए ndd
उपकरण के साथ उपयोग किया जाता है। में XTI (यह भी देखें ओपन समूह करता है, तो आप एक सदस्य हैं), t_open
समारोह के साथ इस्तेमाल किया जा सकता /dev/tcp
TCP कनेक्शन को खोलने के लिए, लेकिन यह प्रयोग नहीं करता है पथ आधारित सेटअप, वहाँ लक्ष्य मेजबान निर्दिष्ट करने के लिए एक अलग डेटा संरचना है और पोर्ट (और अन्य पैरामीटर)।
/dev
वर्तमान linuxes पर एक tmpfs है, और यह पुराने लोगों में रूट विभाजन पर था। यही कारण है कि वर्तमान में यह असंभव है। यह एक sysfs या procfs एक्सटेंशन के साथ आसानी से संभव बनाया जा सकता है (दोनों fs बहुत लचीले और समान हैं (वास्तव में शायद कोई नहीं जानता कि वे समान क्यों नहीं हैं)), आज कोई भी ऐसा नहीं करता है, लेकिन इसे लगभग 100 में बनाया जा सकता है कोड की लाइनें।