Crate daemonize

Source
Expand description

daemonize is a library for writing system daemons. Inspired by the Python library thesharp/daemonize.

The respository is located at https://github.com/knsd/daemonize/.

Usage example:

extern crate daemonize;

use std::fs::File;

use daemonize::Daemonize;

fn main() {
    let stdout = File::create("/tmp/daemon.out").unwrap();
    let stderr = File::create("/tmp/daemon.err").unwrap();

    let daemonize = Daemonize::new()
        .pid_file("/tmp/test.pid") // Every method except `new` and `start`
        .chown_pid_file(true)      // is optional, see `Daemonize` documentation
        .working_directory("/tmp") // for default behaviour.
        .user("nobody")
        .group("daemon") // Group name
        .group(2)        // or group id.
        .umask(0o777)    // Set umask, `0o027` by default.
        .stdout(stdout)  // Redirect stdout to `/tmp/daemon.out`.
        .stderr(stderr)  // Redirect stderr to `/tmp/daemon.err`.
        .privileged_action(|| "Executed before drop privileges");

    match daemonize.start() {
        Ok(_) => println!("Success, daemonized"),
        Err(e) => eprintln!("Error, {}", e),
    }
}

Structs§

Child
Chiled process execution outcome.
Daemonize
Daemonization options.
Error
This error type for Daemonize start method.
Group
Expects system group id or name. If name is provided it will be resolved to id later.
Mask
File mode creation mask.
Parent
Parent process execution outcome.
Stdio
Describes what to do with a standard I/O stream for a child process.
User
Expects system user id or name. If name is provided it will be resolved to id later.

Enums§

Outcome
Daemonization process outcome. Can be matched to check is it a parent process or a child process.