Отслеживание смерти детского процесса
Как я могу отследить смерть дочернего процесса, не заставляя родительский процесс ждать, пока дочерний процесс не будет уничтожен?
Я пытаюсь сценарий клиент-сервер, где сервер принимает соединение от клиента и разветвляет новый процесс для каждого соединения, которое он принимает.
Я игнорирую сигналы SIGCHLD, чтобы предотвратить создание зомби.
signal(SIGCHLD, SIG_IGN);
while(1)
{
accept();
clients++;
if(fork() ==0)
{
childfunction();
clients--;
}
else
{
}
}
Проблема в приведенном выше сценарии заключается в том, что если дочерний процесс будет убит вchildfunction()
функция, глобальная переменнаяclients
не уменьшается.
НОТА: Я ищу решение без использования сигнала SIGCHLD ... Если возможно