Ho un programma che esce automaticamente dopo aver letto un EOF in un dato flusso (nel caso seguente, stdin).
Ora voglio fare uno script di shell, che crea una pipe denominata e collega lo stdin del programma ad esso. Quindi lo script scrive più volte sulla pipe usando echo
e cat
(e altri strumenti che generano automaticamente un EOF quando escono). Il problema che sto affrontando è che, quando il primo echo
è terminato , invia un EOF alla pipe e fa uscire il programma. Se uso qualcosa del genere, tail -f
non posso inviare un EOF quando intendo uscire dal programma. Sto cercando una soluzione equilibrata ma senza risultati.
Ho già trovato sia come prevenire gli EOF sia come inviare manualmente un EOF ma non riesco a combinarli. C'è qualche suggerimento?
#!/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
causa resta in sospeso, perché?