1 extern crate daemonize;
2 
3 use std::fs::File;
4 
5 use daemonize::Daemonize;
6 
7 fn main() {
8     let stdout = File::create("/tmp/daemon.out").unwrap();
9     let stderr = File::create("/tmp/daemon.err").unwrap();
10 
11     let daemonize = Daemonize::new()
12         .pid_file("/tmp/test.pid") // Every method except `new` and `start`
13         .chown_pid_file(true) // is optional, see `Daemonize` documentation
14         .working_directory("/tmp") // for default behaviour.
15         .user("nobody")
16         .group("daemon") // Group name
17         .group(2) // or group id.
18         .umask(0o777) // Set umask, `0o027` by default.
19         .stdout(stdout) // Redirect stdout to `/tmp/daemon.out`.
20         .stderr(stderr) // Redirect stderr to `/tmp/daemon.err`.
21         .privileged_action(|| "Executed before drop privileges");
22 
23     match daemonize.start() {
24         Ok(_) => println!("Success, daemonized"),
25         Err(e) => eprintln!("Error, {}", e),
26     }
27 }
28