On Fri, 2007-03-30 at 17:22 -0600, Steve wrote: > It's really simple you just fork 2 times before entering the main > application loop, then let the parent forks die. > > Look at it though, I think this may be a mistake. Looks like it's > leaving one extra parent just hanging there, because it's not actually > for daemonizing, it's for multi process spawning. > I initially picked up this trick as a quick and dirty way of having a > single server process running that could launch more copies of itself > to handle load outside its realm. For instance if I have a server > responsible for a certain set area in a 3D world say -1024,1024 and > player wants to leave that area, I needed a quick way to spawn a new > server to handle the area the player was walking into. However I > didn't want umpteen million processes running empty zones, so doing a > double fork allowed me to detach the child servers from the main root > server, and when those zones emptied out the child process would die a > natural death. > Anyways for some reason I got that mixed up in my mind with Daemonizing.
No, indeed the recommended procedure for portably deamonizing a server is to use the double fork. I'm not sure of all the reasons, but it is in the examples I've seen and I've used that method myself. See: http://www.developerweb.net/forum/archive/index.php/t-3025.html According to the page: "The double fork() thing is meant to make the process an orphan, in fact making it a child of the init process (usually PID 1). The setsid() is used to create a new session, making the process a group leader, dettaching it from the controlling tty (a Ctrl-C won't help ; ) and making it a session leader..." Michael /* PLUG: http://plug.org, #utah on irc.freenode.net Unsubscribe: http://plug.org/mailman/options/plug Don't fear the penguin. */
