私のプログラムでは、execlで長寿命テール(-f付き)を実行しています。 execlの呼び出し後に何も実行されません。UNIXでのexeclの動作
私のプログラムで他のことができるようにバックグラウンドでこのテールをコール/実行する必要がありますか?
I CTRL C.
私のプログラムでは、execlで長寿命テール(-f付き)を実行しています。 execlの呼び出し後に何も実行されません。UNIXでのexeclの動作
私のプログラムで他のことができるようにバックグラウンドでこのテールをコール/実行する必要がありますか?
I CTRL C.
によって、私のプログラムのうち、通常の出口とman page for the exec family of calls開始:
機能の幹部の家族は 新しいプロセスイメージで 現在のプロセスイメージを置き換えます。
あなたが達成したいとは思っていませんが、execのように見えるのは解決策ではありません。あなたの最初のプログラムを生き続けるには、forkが必要です。あなたの初期プログラムはtail -fの出力で何かをしますか?
execl()
が呼び出しプロセスに置き換わるので、呼び出された呼び出しプログラムはもう呼び出されません。
これを回避するには、fork()
を呼び出した後にexecl()
に電話することができます。フォークは2つのプログラム(親と子)を分割し、どちらが子プロセスで、どのプログラムが親であるかをチェックすることができます。 This exampleはforkの使い方を説明しています.2番目の例では、execl()
コールを子プロセスセクションに置きます。
親プログラムがtailからの出力をキャプチャしたい場合は、popen()関数を調べる必要があります。これはtailプロセスを開始し、それが返すFILE *から出力を読み取ることができます。
親プログラムが出力のキャプチャに関心がない場合は、fork()を使用して子プロセスを作成し、execl()を呼び出します。子プロセスイメージは末尾に置き換えられ、親プロセスは続行されます。
ありがとうございます。はい、私はマニュアルページを読んで、私はこの質問を投稿しました。私はこの尻尾をバックグラウンドで実行し、私のプログラムでやり続けることを望みます。私が使うことができる他のライブラリ関数? – hari
私は 'fork()'はあなたが望むことをやっていると信じています。一度それを呼び出すと、親プロセスの内部でプログラムをやり続け、子プロセスの中で 'execl()'を呼び出します。例については私の答えを見てください。 –