0

バックグラウンドで実行できるように、「デーモン」モードを持つCプログラムがあります。「-d」で実行すると、次のコードを使用してフォークします。

if(daemon_mode == 1)
{
    int i = fork();
    if(i<0) exit(1); // error
    if(i>0) exit(0); // parent
}

init スクリプトを作成しました。手動で init スクリプトを実行してデーモンを起動すると、問題なく起動しますが、「stop」を指定して実行すると、デーモンが停止しません。

問題は、分岐によって PID が変更されたことだと思いますが、何が間違っていないのでしょうか?どうすれば修正できますか?

4

1 に答える 1

1

pidファイルを使用してプロセスを制御している場合は、pidを変更すると問題が発生する可能性があります。デーモン化する前ではなく、デーモン化した後にpidファイルを書き込むだけです。

于 2013-02-07T22:22:15.703 に答える