Как зомби вредят?

От perlipc/Сигналы:

eval {
  local $SIG{ALRM} = sub { die "alarm clock restart" };
  alarm 10;
  flock(FH, 2); # blocking write lock
  alarm 0;
};
if ([email protected] and [email protected] !~ /alarm clock restart/) { die }

Если время ожидания операции - system() или qx(), этот метод может генерировать зомби. Если это имеет значение для вас, вам нужно будет сделать свои собственные fork() и exec() и убить беглый дочерний процесс.

У меня есть аналогичный код, где время ожидания операции - system() или qx().

Плохо ли это о зомби, что они потребляют память или есть ли другие способы зомби могут нанести вред?

Ответ 1

Основная проблема заключается в том, что они потребляют слоты таблицы процессов. В таблице процессов Linux может храниться 64 тыс. Записей, поэтому это вряд ли приведет к проблемам, если вы не будете делать много разветвления без очистки зомби. Я ожидаю, что большинство, если не все, другие современные * nixes имеют таблицы процессов того же размера. Однако при запуске ps он выглядит уродливым.

Память на самом деле не проблема, так как каждый зомби занимает всего несколько байтов для записи своего статуса выхода.

Ответ 2

Они потребляют память и пространство в таблице процессов.