मेरा एक प्रोग्राम है जो किसी दिए गए स्ट्रीम में (निम्नलिखित मामले, स्टडिन) में ईओएफ पढ़ने पर स्वचालित रूप से बाहर निकलता है।
अब मैं एक शेल स्क्रिप्ट बनाना चाहता हूं, जो एक नामित पाइप बनाता है और कार्यक्रम के स्टड को इससे जोड़ता है। फिर स्क्रिप्ट पाइप के लिए लिखते हैं कई बार उपयोग करते हुए 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कारण से हैश में है, क्यों?