Re: disowning a process

From: Davy Durham
Date: Fri May 27 2005 - 18:43:22 EST


Alan Cox wrote:

On Gwe, 2005-05-27 at 19:55, Davy Durham wrote:


Cool.. I looked at the daemon function and I might be able to use it..



Using daemon() is generally wise - it is basically a double fork and
then one exits so that the orphan child becomes owned by init. However
it also knows about platform specific considerations like setpgrp v
setsid, whether an ioctl must be done to disown the controlling tty etc
which can be fairly OS generation specific.



Well, when I tried using it in a program with some sleeps to test.. I noticed that the intermediate process that daemon creates is not cleaned up with a wait() call (so I see a defunct process in the ps listing).

If I manually do the double fork() then I can call waitpid() myself for the pid that I know it spawned. But if I just call wait() after calling daemon, then I don't know if I just cleaned up the pid it spawned (do I?), or some other previously spawned one (for perhaps totally different reasons)..

For my specifics it may not be a problem, but I guess I'm just whining about the fact that daemon() doesn't clean it up itself (or can it?)

Thanks much,
Davy

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/