On modern UNIX-like systems (that comply with SUSv3 specification in this respect), the following special case applies: if the parent "explicitly" ignores SIGCHLD by setting its handler to codice_11 (rather than simply ignoring the signal by default) or has the codice_12 flag set, all child exit status information will be discarded and no zombie processes will be left. Zombies can be identified in the output from the Unix codice_13 command by the presence of a "codice_14" in the "STAT" column. Zombies that exist for more than a short period of time typically indicate a bug in the parent program, or just an uncommon decision to not reap children (see example). If the parent program is no longer running, zombie processes typically indicate a bug in the operating system. As with other resource leaks, the presence of a few zombies is not worrisome in itself, but may indicate a problem that would grow serious under heavier loads. Since there is no memory allocated to zombie processes – the only system memory usage is for the process table entry itself – the primary concern with many zombies is not running out of memory, but rather running out of process table entries, concretely process ID numbers. To remove zombies from a system, the SIGCHLD signal can be sent to the parent manually, using the codice_3 command. If the parent process still refuses to reap the zombie, and if it would be fine to terminate the parent process, the next step can be to remove the parent process. When a process loses its parent, codice_4 becomes its new parent. codice_4 periodically executes the codice_2 system call to reap any zombies with codice_4 as parent. "Synchronously" waiting for the specific child processes in a (specific) order may leave zombies present longer than the above-mentioned "short period of time". It is not necessarily a program bug.  int main(void)  for (i = 9; i >= 0; --i) {  for (i = 9; i >= 0; --i){ return 0;   parent9 Child3 Child4 Child2 Child5 Child1 Child6 Child0 Child7 Child8 Child9 // there is a pause here parent8 parent7 parent6 parent5 parent4 parent3 parent2 parent1 parent0   In the first loop, the original (parent) process forks 10 copies of itself. Each of these child processes (detected by the fact that fork() returned zero) prints a message, sleeps, and exits.