Tengo un programa que sale automáticamente al leer un EOF en una secuencia dada (en el siguiente caso, stdin).
Ahora quiero hacer un script de shell, que crea una tubería con nombre y conectar el stdin del programa. Luego, el script escribe en la tubería varias veces usando echo
y cat
(y otras herramientas que generan automáticamente un EOF cuando salen). El problema al que me enfrento es que, cuando echo
se realiza el primero , envía un EOF a la tubería y hace que el programa salga. Si uso algo así tail -f
, no puedo enviar un EOF cuando tengo la intención de salir del programa. Estoy investigando una solución equilibrada pero fue en vano.
Ya he encontrado cómo prevenir EOF y cómo enviar un EOF manualmente, pero no puedo combinarlos. ¿Hay alguna pista?
#!/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 aguanta, ¿por qué?