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 process execution outcome.
  • Daemonization options.
  • This error type for Daemonize start method.
  • Expects system group id or name. If name is provided it will be resolved to id later.
  • File mode creation mask.
  • Parent process execution outcome.
  • Describes what to do with a standard I/O stream for a child process.
  • Expects system user id or name. If name is provided it will be resolved to id later.

Enums

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