Bart Hartgers <bart@xxxxxxxxxxxxxxxxxx> writes:
Nico Schottelius wrote:Hello!
I wrote an init replacement (cinit), which is now in the beta-phase.
The only problem I do have currently is that when calling
'loadkeys dvorak' directly from init (without a shell or anything)
it will leave behind a gzip zombie (which was forked by loadkeys).
Now my question is: Is that a problem of loadkeys or from my init
and what could be the reasons that it's still there?
Not really a kernel issue but:
Yes and no. If a parent exits before its child, the child is
reparented to init. loadkeys probably doesn't wait properly for gzip
cinit forks() loadkeys and does waitpid() for it. There is no> loadkeys zombie, only gzip.
Use waitpid(-1,...) or wait(...) to wait on all childeren in your
init. gzip will become a child of cinit.
In fact, init must reap any zombies that are reparented to it.
Otherwise, the system will sooner or later run out of PIDs. There are
a lot of misbehaving programs out there, and even if they were all
well-behaved, they could be killed before having waited for their
children, leaving zombies behind.