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 );
}
}
ゾンビの殺し方がわかった More ログイン