私はexec()関数の1つで子プロセスを要求する必要がある場合、子プロセスを生成する必要があります。killとwaitpidを使って刈り取る能力の間の予想時間
子プロセスが終了する前に終了していない場合、アプリケーションは新しいインスタンスを開始する前に前のインスタンスを強制終了する必要があります。それは私が前のインスタンスのPIDを維持し、プロセスを享受するために
waitpid(pid, &status, WNOHANG)
を使用してい
kill(pid, SIGTERM);
でこれを行います。
killコールを発行してからwaitpidでプロセスを取得できるまでに非常に長い時間ウィンドウ(おそらく数百ミリ秒)があるようです。
この原因は何ですか?私は、子プロセスがシグナルハンドラを設定しない限り(これはそうではありません)、事実上すぐに殺されると考えました。これは200MHzのARM9上ですが、まだ...私には奇妙に思えます。
アプリケーションを強制終了する代わりに、メッセージを送信して自己管理を終了すると、時間を節約することができます。 – avra