Le suivi de la mort d'un enfant de processus

Comment ai-je pu traquer la mort d'un enfant sans rendre le processus parent attendre jusqu'à ce que le processus de l'enfant a été tué?

Je suis en train d'essayer un scénario client-serveur où le serveur accepte la connexion d'un client et les fourches d'un nouveau processus pour chaque connexion, il accepte.

Je suis ignorant SIGCHLD signaux pour prévenir zombie création.

signal(SIGCHLD, SIG_IGN);
while(1)
{
  accept();
  clients++;
  if(fork() ==0)
  {
     childfunction();
     clients--;
  }
  else
  {
  }
}

Le problème dans le scénario ci-dessus est que si l'enfant est tué dans la childfunction() fonction, la variable globale clients n'est pas décrémenté.

REMARQUE: je suis à la recherche d'une solution sans l'aide de SIGCHLD ... Si possible

  • Vous pouvez faire quelque chose dans le gestionnaire de signal de SIGCHLD
  • Je l'ai déjà mentionné ... SIGCHLD est ignoré .. ?
  • +1 pour un incroyablement spectaculaire titre et la phrase d'ouverture. D:
InformationsquelleAutor codingfreak | 2010-03-04