ú΢f Safe-Infered<Double-fork to create a well behaved daemon. If PIDFILE is  given, check/5set pidfile; if we cannot obtain a lock on the file, ? another process is already using it, so fail. The program is  started with SIGHUP masked; HANDLER is invoked on SIGHUP. See:  ,http://www.enderunix.org/docs/eng/daemon.php ?Note: All unnecessary fds should be close before calling this. DHANDLER is meant to allow the daemon to shutdown cleanly. It could  simply be:    handler = return () Dor something more elaborate like the following, which allows one to C perform some actions before re-raising the signal and killing the  daemon:   handler = do  putStrLn Stopping daemon...  raiseSignal sigTERM 4Stop the daemon identified by PIDFILE by sending it SIGHUP. If ! the process was daemonized with , the handler ? specified there will be invoked first. Return the pid of the < process that was killed; if PIDFILE does not exist, return  . 3Make the current process belong to USER and GROUP. PIDFILE HANDLER PROGRAM PIDFILE GROUP USER daemonize-doublefork-0.1.1System.Posix.Daemon startDaemon stopDaemonbecomeGroupUserbase Data.MaybeNothing