パスワードを忘れた? アカウント作成
451241 journal

fslashtの日記: ゾンビの殺し方がわかった

日記 by fslasht

 UNIXでforkしたchildプロセスが終了したときゾンビプロセスになってしまって困ってました。(psでみると<defunct>と表示される)
 やっとなんとかなりました。

 childプロセスが終了したときのsignalを受け取って、waitしてあげれば良かったのですね。

// 初期化ルーチンで…
signal( SIGCHLD , &SigHandler ); // 割り込みハンドラセット

// 割り込みハンドラ
void SigHandler(int nSig)
{
                printf("Sighandler:%d\n",nSig);

                if ( nSig == SIGCHLD ) {
                                int nWaitStat;
                                while (waitpid(-1,&nWaitStat,WNOHANG ) > 0) {};
                                signal( SIGCHLD , &SigHandler );
                }
}

参考になったページ
サーバーの作り方
echoサービスのサーバ(fork)
小俣光之コンピューターのページメニュー

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

にわかな奴ほど語りたがる -- あるハッカー

読み込み中...