Verfolgung des Todes eines Kindprozesses

Wie kann ich den Tod eines untergeordneten Prozesses ermitteln, ohne den übergeordneten Prozess warten zu lassen, bis der untergeordnete Prozess beendet wurde?

Ich versuche ein Client-Server-Szenario, in dem der Server die Verbindung von einem Client akzeptiert und für jede akzeptierte Verbindung einen neuen Prozess auslöst.

Ich ignoriere SIGCHLD-Signale, um die Entstehung von Zombies zu verhindern.

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

Das Problem im obigen Szenario ist, dass, wenn der untergeordnete Prozess in der beendet wirdchildfunction() Funktion, die globale Variableclients wird nicht dekrementiert.

HINWEIS: Ich suche nach einer Lösung ohne SIGCHLD-Signal ... Wenn möglich

Antworten auf die Frage(4)

Ihre Antwort auf die Frage