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

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

10 голосов
/ 18 марта 2011

С perlipc / Signals :

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

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

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

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

Ответы [ 2 ]

12 голосов
/ 18 марта 2011

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

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

8 голосов
/ 18 марта 2011

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

...