On Mon, 21 Feb 2005 12:57:22 +0800, Ian Kent said: > This is the first time I've heard this and the first time I wrote a Unix > daemon was fifteen years ago. > > As far as I'm concerned redirecting stdin, stdout and stderr to the null > device, then closing it and setting the process to a be the group leader > (as autofs does) should be all that's needed to daemonize a process. > > So are we saying that we don't trust the kernel to reliably duplicate the > state of file handles when we fork?
No, you have it 180 degrees off. ;) We *do* trust the kernel to reliably duplicate the state of file handles. So if we're about to do the whole double-fork thing and all that, we want to loop around and close all the file descriptors we don't want leaking to the double-forked daemon. Yes, we do something reasonable with fd 0,1,2 - but we probably also want to do something with that unclosed fd 3 that's still open on /etc/mydaemon.cf, and any other file descriptors we've left dangling in the breeze after initialization. And yes, this sort of error happens in Real Live - I need to go and figure out why the /sbin/lvm.static on my initrd is throwing 'File descriptor 3 left open' messages...
pgpwa9z1MK9uv.pgp
Description: PGP signature