Ich habe ein Programm, das beim Lesen eines EOF in einem bestimmten Stream automatisch beendet wird (im folgenden Fall stdin).
Jetzt möchte ich ein Shell-Skript erstellen, das eine Named Pipe erstellt und den Standard des Programms damit verbindet. Anschließend schreibt das Skript mehrmals mit echound cat(und anderen Tools, die beim Beenden automatisch einen EOF generieren) in die Pipe . Das Problem, mit dem ich konfrontiert bin, ist, dass wenn das erste echoerledigt ist, ein EOF an die Pipe gesendet wird und das Programm beendet wird. Wenn ich so etwas verwende, kann tail -fich keine EOF senden, wenn ich beabsichtige, das Programm zu beenden. Ich suche nach einer ausgewogenen Lösung, aber ohne Erfolg.
Ich habe bereits herausgefunden, wie man EOFs verhindert und wie man einen EOF manuell sendet, aber ich kann sie nicht kombinieren. Gibt es einen Hinweis?
#!/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>PUrsache hängen in Bash, warum?