daemonize makes the executing process a daemon.
See Chapter 13 of Advanced Programming in the UNIX Environment Second Edition by Stephens and Rago for more details.
The optional arguments have defaults as per
By default, output sent to stdout and stderr after daemonization will be silently
eaten. This behaviour may be adjusted by using
redirect_stderr. See the documentation for
daemonize_wait makes the executing process a daemon, but delays full detachment
from the calling shell/process until the returned "release" closure is called.
Any output to stdout/stderr before the "release" closure is called will get
sent out normally. After "release" is called, stdin is connected to /dev/null,
and stdout and stderr are connected as specified by
redirect_stderr. The default is the usual behaviour whereby both of these
descriptors are connected to /dev/null.
Note that calling
release will adjust SIGPIPE handling, so you should not rely on
the delivery of this signal during this time.
daemonize_wait allows you to daemonize and then start async, but still have
stdout/stderr go to the controlling terminal during startup. By default, when you
daemonize, toplevel exceptions during startup would get sent to /dev/null. With
daemonize_wait, toplevel exceptions can go to the terminal until you call