1 unstable release

0.1.0 Nov 11, 2025

#320 in Unix APIs

Download history 22/week @ 2025-11-16 1/week @ 2025-11-23 1325/week @ 2025-12-14 1581/week @ 2025-12-21 3061/week @ 2025-12-28 6851/week @ 2026-01-04 12404/week @ 2026-01-11 8329/week @ 2026-01-18 9361/week @ 2026-01-25 9160/week @ 2026-02-01

41,206 downloads per month
Used in 2 crates

MIT/Apache

26KB
610 lines

dameonix

This is a maintained fork of the daemonize crate, which in turn was inspired by the thesharp/daemonize Python library.

dameonix v0.1.0 is identical with daemonize v0.5.0 but with a fix for the reported UB issue applied. Future major versions will likely change or remove APIs to reduce the amount of unsafe code that needs to be audited and documented.

Usage example:

use std::fs::File;

use daemonix::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),
    }
}

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual-licensed as above, without any additional terms or conditions.

Dependencies

~42KB