10.8.3.1. Плохие родители: полное игнорирование потомков

10.8.3.1. Плохие родители: полное игнорирование потомков

Простейшим действием, которое вы можете сделать, является изменение действия для SIGCHLD на SIG_IGN. В этом случае завершившиеся потомки не становятся зомби. Вместо этого статус их завершения отбрасывается, и они полностью удаляются из системы.

Другой возможностью, дающей такой же результат, является использование флага SA_NOCLDWAIТ. В коде:

/* Старый стиль: */        /* Новый стиль: */

signal(SIGCHLD, SIG_IGN);  struct sigaction sa;

                           sa.sa_handler = SIG_IGN;

                           sa.sa_flags = SA_NOCLDWAIT;

                           sigemptyset(&sa.sa_mask);

                           sigaction(SIGCHLD, &sa, NULL);