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