How do I fork a daemon process?

If by daemon process you mean one that's detached (disassociated from its tty), then the following process is reported to work on most Unixish systems. Non-Unix users should check their Your_OS::Process module for other solutions.

Open /dev/tty and use the TIOCNOTTY ioctl on it. See tty(4) for details. Or better yet, you can just use the POSIX::setsid() function, so you don't have to worry about process groups.

Change directory to /

Reopen STDIN, STDOUT, and STDERR so they're not connected to the old tty.

Background yourself like this:

    fork && exit;

The Proc::Daemon module, available from CPAN, provides a function to perform these actions for you.


Back to perlfaq8