module Lwt_daemon:sig..end
val daemonize : ?syslog:bool ->
?stdin:[ `Close | `Dev_null | `Keep ] ->
?stdout:[ `Close | `Dev_null | `Keep | `Log of Lwt_log.logger | `Log_default ] ->
?stderr:[ `Close | `Dev_null | `Keep | `Log of Lwt_log.logger | `Log_default ] ->
?directory:string -> ?umask:[ `Keep | `Set of int ] -> unit -> unitNotes:
syslog is true (the default), then Lwt_log.default is
set to Lwt_log.syslog ~facility:`Daemon (), otherwise it is
kept unchanged.
stdin is one of:
`Dev_null which means that Unix.stdin is reopened as
/dev/null, this is the default behavior`Close means that Unix.stdin is simply closed`Keep means that Unix.stdin is left unchangedstdout and stderr control how the two associated file
descriptors are redirected:`Dev_null means that the output is redirected to /dev/null`Close means that the file descriptor is closed`Keep means that it is left unchanged`Log logger means that the output is redirected to this
logger`Log_default means that the output is redirected to the
default loggerstdout and stderr defaults to `Log_default.
Warning: do not redirect an output to a logger logging into this outpout, for example this code will create an infinite loop:
let logger = Lwt_log.channel ~close_mode:`Keep ~channel:Lwt_io.stderr () in
Lwt_daemon.daemonize ~syslog:false ~stderr:(`Log logger) ();
prerr_endline "foo"
The current working directory is set to directory, which
defaults to "/".
umask may be one of:
`Keep which means that the umask is left unchanged`Set n which means that the umash is set to n`Set 0o022.