Leitet den Befehl an einen auf nohup laufenden Prozess weiter, der Eingaben von STDIN akzeptiert.

Leitet den Befehl an einen auf nohup laufenden Prozess weiter, der Eingaben von STDIN akzeptiert.

Ich habe ein Programm, das ich mit ausführe nohup program &. Dieses Programm akzeptiert Eingaben von STDIN. Gibt es eine Möglichkeit, Text an STDINein Programm zu senden, das über ausgeführt wird nohup?

Dies geschieht unter FreeBSD mit Bash. Ich würde gerne sehen, wie dies auch unter Linux funktioniert.

Antwort1

nohupführt das Programm mit umgeleiteter Standardeingabe aus /dev/null(vorausgesetzt, Sie haben den nohupBefehl selbst nicht umgeleitet). Sie können also keine Eingabe an dieses Programm senden.

Wenn Sie Eingaben an das Programm senden möchten, leiten Sie die Eingaben beim Start um:

nohup program <input-file.txt &  # input from a file
nohup data-producer | nohup program &  # input from another program
mkfifo program.pipe; nohup program <program.pipe &  # input from a named pipe, feed it what you want later

(Tatsächlich könnte es möglich sein, die Standardeingabe des Programms mit einer anderen Quelle zu verbinden, indem man ptrace, also einen Debugger oder einen anderen Hack, verwendet. Dies könnte das Programm zum Absturz bringen, wenn es verfolgt, woher seine Eingabe kommt. SieheWie kann ich einen laufenden Prozess über SSH anhalten, ihn ablehnen, ihn einer neuen Bildschirm-Shell zuordnen und die Pause wieder aufnehmen?; es gibt im SE-Netzwerk noch weitere Fragen zu diesem Thema.)

verwandte Informationen