open Unix
open Printf
+(* Ensures that Whentools module is linked to the daemon. *)
+let _ = Whentools.set_variable
+
let () =
(* Running the daemon as root is a mistake. It must be run as a
* non-root user.
(* chdir / so we don't prevent filesystems from being unmounted. *)
chdir "/";
- (* Close file descriptors. *)
+ (* Close file descriptors, replace with /dev/null. *)
close stdin;
close stdout;
close stderr;
+ ignore (openfile "/dev/null" [O_RDONLY] 0);
+ ignore (openfile "/dev/null" [O_WRONLY] 0);
+ ignore (openfile "/dev/null" [O_WRONLY] 0);
(* Create a new session. *)
ignore (setsid ());
);
(* Start syslog. *)
- Syslog.notice "daemon started: uid=%d home=%s" euid home;
+ Syslog.notice "daemon started: version=%s uid=%d home=%s native=%b"
+ Config.package_version euid home Dynlink.is_native;
- (* If there is a jobs.cmo file, load it. *)
- let () =
- let file = sprintf "%s/jobs.cmo" jobsdir in
- if Sys.file_exists file then
- try Daemon.reload_file () with Failure _ -> () in
+ (* If there is a jobs__*.cmo/jobs__*.cmxs file, load it. *)
+ (try Daemon.reload_files () with Failure _ -> ());
(* Go into main loop. *)
Daemon.main_loop ()