STDINからの入力を受け入れるnohupで実行中のプロセスにコマンドをパイプ/送信します。

STDINからの入力を受け入れるnohupで実行中のプロセスにコマンドをパイプ/送信します。

を使用して実行するプログラムがありますnohup program &。このプログラムは からの入力を受け入れます。経由で実行されているプログラムSTDINの にテキストを送信する方法はありますか?STDINnohup

これは FreeBSD で bash を実行しているところです。Linux でも同様に実行できるかどうか確認したいと思います。

答え1

nohup標準入力をリダイレクトしてプログラムを実行します/dev/null(コマンド自体をリダイレクトしていないと仮定しますnohup)。したがって、このプログラムに入力を送信することはできません。

プログラムに入力を送信する場合は、起動時に入力をリダイレクトします。

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

(実際には、デバッガやその他のハックを使用して、プログラムの標準入力を別のソースに再接続できる可能性がありますptrace。入力元を追跡している場合は、プログラムがクラッシュする可能性があります。ssh 経由で実行中のプロセスを一時停止し、それを放棄し、新しいスクリーン シェルに関連付けて一時停止を解除するにはどうすればよいですか?; このトピックについては SE ネットワーク上に他の質問があります。

関連情報