
If you want a normal daemon, you want to look at System.Posix.Process to create a proper daemon (forkProcess, createSession; don't forget to close stdOutput (and, errr, Haskell library types: stdin and stderr are where? not System.Posix.IO with stdOutput) and reopen them on / dev/null, at least if they're ttys as determined by System.Posix.Terminal.queryTerminal). You also want to write out a pidfile (/var/run/programname.pid) for use by startproc / killproc, and you want to install a handler for sigTERM (System.Posix.Signals.installHandler) which sets the exit flag (TVar, MVar, IORef, Chan, take your pick). Ideally you also catch sigHUP and reload your state.
Thanks for the guide, Brandon !! By the way, I found a piece of code with function (daemonize :: IO () -> IO ()) (http://sneakymustard.com/2008/12/11/haskell-daemons), which is close to the subject. I guess now I'm ready to implement my own daemon! Thanks for your help, everyboby!! =) -- View this message in context: http://www.nabble.com/how-to-implement-daemon-start-and-stop-directives--tp2... Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com.