मेरा एक प्रोग्राम है जो किसी दिए गए स्ट्रीम में (निम्नलिखित मामले, स्टडिन) में ईओएफ पढ़ने पर स्वचालित रूप से बाहर निकलता है।
अब मैं एक शेल स्क्रिप्ट बनाना चाहता हूं, जो एक नामित पाइप बनाता है और कार्यक्रम के स्टड को इससे जोड़ता है। फिर स्क्रिप्ट पाइप के लिए लिखते हैं कई बार उपयोग करते हुए echo
और cat
(और अन्य उपकरण है कि स्वचालित रूप से एक EOF जब वे बाहर निकलने के उत्पन्न करता है)। मुझे जो समस्या आ रही है, जब पहली बार echo
किया जाता है, तो यह पाइप को एक ईओएफ भेजता है और कार्यक्रम से बाहर निकलता है। अगर मैं कुछ का उपयोग करता हूं, tail -f
तो जब मैं कार्यक्रम छोड़ने का इरादा रखता हूं तो मैं ईओएफ नहीं भेज सकता। मैं एक संतुलित समाधान पर शोध कर रहा हूं लेकिन कोई फायदा नहीं हुआ।
मैंने पहले ही दोनों को पाया है कि ईओएफ को कैसे रोका जाए और ईओएफ को मैन्युअल रूप से कैसे भेजा जाए लेकिन मैं उन्हें जोड़ नहीं सकता। क्या कोई संकेत है?
#!/bin/sh
mkfifo P
program < P & : # Run in background
# < P tail -n +1 -f | program
echo some stuff > P # Prevent EOF?
cat more_stuff.txt > P # Prevent EOF?
send_eof > P # How can I do this?
# fg
exec 3>P
कारण से हैश में है, क्यों?