Messages in this thread | | | Subject | Re: disowning a process | From | Steven Rostedt <> | Date | Fri, 27 May 2005 14:04:48 -0400 |
| |
On Fri, 2005-05-27 at 12:30 -0500, Davy Durham wrote: > Hi, I'm not sure if there's a posix way of doing this, but wanted to > check if there is a way in linux. > > I want to have a daemon that fork/execs a new process, but don't want > (for various reasons) the responsibility for cleaning up those process > with the wait() function family. I'm assuming that if the init process > became the parent of one of these forked processes, then it would clean > them up for me (is this assumption true?). Besides the daemon process > exiting, is there a way to disown the process on purpose so that init > inherits it?
Try man daemon.
The way I use to do it was simply do a double fork. That is (simplified)...
if ((pid = fork()) < 0) { perror("fork"); } else if (!pid) { /* child */ if ((pid = fork()) < 0) { perror("child fork"); exit(-1); } if (pid) { /* child parent */ /* Here we detach from the child */ exit(0); } /* Now this code is a child running almost as a daemon with init as the parent. */ setsid(); /* Now the child is completely detached from the original parent */ /* ... daemon code here ... */ exit(0); }
/* parent code here */
-- Steve
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |