simple_daemon/
simple_daemon.rs

1extern crate unix_daemonize;
2
3use std::{io, env, time, thread, process};
4use std::io::Write;
5use unix_daemonize::{daemonize_redirect, ChdirMode};
6
7fn main() {
8    let mut args = env::args();
9    let cmd_proc = args.next().unwrap();
10    if let (Some(stdout_filename), Some(stderr_filename)) = (args.next(), args.next()) {
11        println!("Ready to daemonize, target stdout_filename = {}, stderr_filename = {}", stdout_filename, stderr_filename);
12        daemonize_redirect(Some(stdout_filename), Some(stderr_filename), ChdirMode::ChdirRoot).unwrap();
13        for _ in 0 .. 10 {
14            println!("A string for stdout!");
15            writeln!(&mut io::stdout(), "Another string for stdout!").unwrap();
16            writeln!(&mut io::stderr(), "A string for stderr!").unwrap();
17            thread::sleep(time::Duration::from_millis(1000));
18        }
19        println!("Successfull termination");
20        panic!("An now a panic occurs!");
21    } else {
22        writeln!(&mut io::stderr(), "Usage: {} <stdout_filename> <stderr_filename>", cmd_proc).unwrap();
23        process::exit(1);
24    }
25}