
On 5 March 2011 21:51, Vincent Hanquez
On Sat, Mar 05, 2011 at 08:51:59PM +0100, Bas van Dijk wrote:
Hello,
I like to turn my Haskell program into a unix daemon. One of the steps in "daemonizing" a process is to fork it then exit the parent and continue with the child. All this is nicely abstracted in hdaemonize[1] which internally calls forkProcess[2].
I would also like to use multiple simultaneous threads in my program. Unfortunately forkProcess is not supported when running with +RTS -N so I can't use hdaemonize.
I understand why it's problematic to fork a process which is in the middle of running multiple simultaneous threads. However, in the case of a daemon the fork happens in the beginning of the program. So if I can manage to create a program that first daemonizes my process then starts the Haskell program, all is good.
My current plan is to have a custom Haskell main function which is exported using the FFI:
Hi,
Did you alternatively though about daemonizing in your haskell program normally without using +RTS -N, and exec'ing yourself (using executeFile) with the extra cmdline +RTS -N options, and also --no-daemon option to avoid re-daemon/exec'ing ?
I think that would be simpler than your current approch.
What a nice idea! I actually looked for a unix command line tool that could do this but did not think further about doing it myself. Thanks, Bas P.S. So is there a tool that daemonizes another program? Sounds like a job for a neat little Haskell program...