好像不是很正確
下面這段是從
LatinoMixed來的
You cannot kill it because it already is dead. That is why it is called
a zombie. ;^)
To be technical, a zombie process is one that already has terminated via
an exit() system call or uncaught signal. In order for it to "go away"
(be removed from the process table, its parent must do a wait() system call
or one of its variants.
The ultrasecret reason for this is that the zombie contains some statistics
on the process such as the exit status (why it died) and CPU time used that
must be returned to the parent and this is stored in -- guese where --
the zombie's per-process structure. This is why it cannot be removed until
the parent does a wait() on it.
Sometimes a parent fails to do the wait(), usually due to a programming
bug. Any old C program can do a fork() and not do the wait() and cause this.
It used to be a problem with shell scripts doing "foo&" and never waiting back
in the dark days of older UNIX systems.
不過我不知道該怎樣把他用中文說的更簡單明瞭