क्या गैर अवरोधन/एसिंक्रोनस नामित पाइप या खोल में समान कुछ बनाने का कोई तरीका है? ताकि कार्यक्रम इसमें लाइनें रख सकें, वे लाइनें रैम में रहेंगी, और जब कुछ प्रोग्राम पाइप से कुछ लाइनें पढ़ सकते थे, जबकि इसे फीफो में पढ़ा नहीं गया था? यह भी बहुत संभव है कि कार्यक्रम एक ही समय में इस फीफो को लिख और पढ़ सकते हैं। सबसे पहले मैं शायद यह फाइलों का उपयोग करके किया जा सकता है, लेकिन थोड़ा सा वेब खोजने के बाद ऐसा लगता है कि फ़ाइल को एक ही समय में पढ़ा और लिखा गया है। नामित पाइप लगभग काम करेंगे, केवल दो समस्याएं हैं: पहले अगर वे दूसरे छोर पर कोई नहीं हैं, तो वे पढ़ते हैं/लिखते हैं, दूसरा अगर मैं अवरुद्ध करने के लिए लिखने देता हूं और दो प्रक्रियाओं को पाइप पर लिखने के लिए सेट करता हूं, जबकि कोई भी पढ़ता नहीं है, प्रत्येक प्रक्रिया के साथ एक पंक्ति लिखने की कोशिश करके, और फिर head -n 1 <fifo>
आज़माएं, मुझे केवल एक पंक्ति मिलती है जैसा मुझे चाहिए, लेकिन दोनों लेखन प्रक्रियाएं समाप्त हो जाती हैं, और दूसरी पंक्ति खो जाती है। कोई सुझाव?खोल/फाइल सिस्टम में अनब्लॉकिंग/एसिंक्रोनस फीफो/नामित पाइप?
संपादित करें: शायद कुछ इंटरमीडिएट प्रोग्राम का उपयोग लेखकों और पाठकों के बीच मध्यस्थ की तरह अभिनय करने के लिए किया जा सकता है?
(अगर आप चाहते हैं या एक बड़ी संख्या) आप 'एमकेऍफ़एस/dev/ram1 1048576' की तरह कुछ कर सकता है और माउंट'/dev/कहीं भी तो ram1'। यह शायद "नॉनब्लॉकिंग" के करीब है जैसा आप प्राप्त कर सकते हैं। यह निश्चित रूप से डिफ़ॉल्ट रूप से अनब्लॉक नहीं होगा, बस बहुत तेज़ होगा (लेकिन नामित पाइप डिफ़ॉल्ट रूप से नहीं होगा)। नॉनब्लॉकिंग ऑपरेशन ऐसा कुछ है जिसे प्रोग्राम को डिस्क्रिप्टर पर सेट करने की आवश्यकता होती है। – Damon
हालांकि मैं इस विकल्प के बारे में, tmpfs या इसी तरह की फ़ाइल बनाते हैं, लेकिन फिर एक ही समय में लिखने और पढ़ने की समस्या बनी रहती है। इसकी फाइल के बाद लेखन और लेखन की तरह अधिक। एक प्रोग्राम फ़ाइल के अंत में लिखता है, अन्य ने शुरुआत से कुछ जानकारी पढ़ी है और अब पहली लाइनों को हटाने की जरूरत है, इसलिए अंत में लिखना और एक ही समय में सामने हटाना, मुझे इसका समाधान नहीं मिला, मैं इस्तेमाल होता इस। – morphles
प्रोग्राम लिखने के बिना ऐसी चीज करना मुश्किल है (यदि असंभव नहीं है)। कुछ ऐसा हो सकता है जो _almost_ काम कर सकता है: नामकरण परमाणु है, इसलिए प्रत्येक निर्माता प्रत्येक अलग-अलग कार्य को व्यक्तिगत टेम्पफाइल पर लिख सकता है, फ़ाइल बंद कर सकता है और इसे "प्रसिद्ध" पैटर्न के अनुसार नाम बदल सकता है। प्रत्येक उपभोक्ता अगली फ़ाइल को यादृच्छिक रूप से पुनर्नामित कर सकता है (इसलिए कोई अन्य उपभोक्ता इसे नहीं उठाएगा), सामग्री पढ़ें, और फ़ाइल को हटा दें। हालांकि यह केवल प्रति-कार्य स्तर पर काम करेगा (जो भी निर्माता एक इकाई के रूप में लिखते हैं), प्रति पंक्ति स्तर पर नहीं। – Damon