In UNIX habe ich einen Prozess, den ich mit nohup ausführen möchte. Dieser Vorgang wartet jedoch irgendwann auf eine Eingabeaufforderung, an der ich yes
eingeben muss oder no
damit es weitergeht. Bisher habe ich in UNIX Folgendes getan:
nohup myprocess <<EOF
y
EOF
Also starte ich den Prozess ‚myprocess‘ mit nohup und pipe in einer Datei mit ‚y‘ und schließe dann die Datei. Die obigen Zeilen sind praktisch drei separate Befehle – d. h. ich drücke die Eingabetaste in der ersten Zeile in UNIX, dann erhalte ich eine Eingabeaufforderung, wo ich „y“ eingebe und dann die Eingabetaste drücke, um schließlich „EOF“ einzugeben und erneut die Eingabetaste zu drücken. Das funktioniert also perfekt, aber mein Problem ist unten.
Ich möchte das jetzt in Perl ausführen, bin mir aber nicht sicher, wie ich diesen Befehl ausführen kann, da er über drei Zeilen geht. Ich weiß nicht, ob Folgendes funktioniert:
my $startprocess = `nohup myprocess <<EOF &
y
EOF
`
Akzeptierte Antwort:
Wenn Sie nur ein einzelnes y
schreiben möchten zur stdin des Prozesses können Sie Folgendes tun:
(echo y | nohup myprocess) &
Wenn Sie weiterhin y
schreiben möchten für jede Eingabeaufforderung, die auftaucht, das coreutil yes
existiert genau für diesen Zweck – es schreibt weiter, was Sie ihm auf stdout sagen. Standardmäßig wird „y“ ausgegeben, also können Sie einfach:
(yes | nohup myprocess) &
aber wenn Sie etwas anderes brauchen, können Sie es als Argument übergeben