का पठन अंत है, मैं splice
का उपयोग STDIN_FILENO
से फ़ाइल डिस्क्रिप्टर तक शून्य-प्रतिलिपि डेटा (जो एक नियमित फ़ाइल, चार या ब्लॉक डिवाइस, फीफो, या हो सकता है) कुछ भी जो open
के साथ खोला जा सकता है)। splice
का उपयोग करने के लिए, फ़ाइल डिस्क्रिप्टर या से फ़ाइल डिस्क्रिप्टर एक पाइप का उचित अंत होना चाहिए, इसलिए आमतौर पर एक पाइप एक मध्यवर्ती बफर के रूप में कार्य करने के लिए बनाया जाता है जब प्रोग्रामर डेटा से शून्य-प्रतिलिपि बनाना चाहता है गैर पाइप गैर-पाइप। हालांकि, अगर STDIN_FILENO
पहले से ही एक पाइप का पढ़ा हुआ अंत है, तो मैं उस चरण को छोड़ सकता हूं और STDIN_FILENO
से अन्य फ़ाइल डिस्क्रिप्टर तक सीधे विभाजित करने का प्रयास कर सकता हूं। इसलिए, मैं यह निर्धारित करने में सक्षम होना चाहूंगा कि STDIN_FILENO
एक पाइप का पढ़ा हुआ अंत है या नहीं।यह निर्धारित करना कि एक पठनीय फ़ाइल डिस्क्रिप्टर एक पाइप
क्या कोई लिनक्स सिस्टम कॉल है जो निर्धारित कर सकता है कि STDIN_FILENO
एक पाइप का पढ़ा हुआ अंत है?
मैं एक परीक्षण कार्यक्रम है कि एक पाइप, 'fstat' कहा जाता है, और परीक्षण किया' S_ISFIFO' बनाते समय कोडित था के सभी को शामिल किया गया। com/ntauU2b5। नतीजा यह है कि एक पाइप के पढ़ने के अंत के लिए 'st_mode' पर' S_ISFIFO' सत्य है। आपका अनुमान सही है, और यह वास्तव में पॉज़िक्स मानक के अनुसार है: "S_ISFIFO (एम) एक पाइप ** या ** फीफो विशेष फ़ाइल के लिए टेस्ट" (http://www.opengroup.org/onlinepubs/009695399/basedefs/sys /stat.h.html) –