फाइल डिस्क्रिप्टर 6 से पढ़ने के लिए मैं ( <&6
या </dev/fd/6
उर्फ /proc/self/fd/6
) का उपयोग कर सकता हूं । आमतौर पर दोनों समान रूप से अच्छी तरह से काम करते हैं। हालाँकि अगर वह फाइल डिस्क्रिप्टर सॉकेट होता है, तो अजीब चीजें होती हैं। उदाहरण के लिए:
$ bash -c 'ls -l /dev/fd/6;cat /dev/fd/6' 6</dev/tcp/localhost/12345
lrwx------ 1 michas michas 64 Jan 10 19:50 /dev/fd/6 -> socket:[315010]
cat: /dev/fd/6: No such device or address
यहाँ ls
पता चलता है कि वर्णनकर्ता वास्तव में मौजूद है। लेकिन इस तरह से डेटा तक पहुंच संभव नहीं है। अगर मैं cat <&6
इसके बजाय सब कुछ फिर से अच्छी तरह से काम करता हूं ।
फ़ाइल डिस्क्रिप्टर तक पहुँचने के दोनों तरीकों में क्या अंतर है?
क्या एक डिस्क्रिप्टर तक पहुंचने का एक अच्छा तरीका है यदि संख्या एक चर में दी गई है? ( </dev/fd/$fd
काम करेगा, लेकिन <&$fd
नहीं।)
(उपर्युक्त स्थिति को लिनक्स पर देखा जा सकता है, लेकिन ओपनबीएसडी पर नहीं। - ऐसा लगता है कि फ़ाइल विवरणक एक नियमित वर्ण उपकरण है।)