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 echo
und 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 echo
erledigt ist, ein EOF an die Pipe gesendet wird und das Programm beendet wird. Wenn ich so etwas verwende, kann tail -f
ich 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>P
Ursache hängen in Bash, warum?