#freebsd #fork #system #file-descriptor #capsicum

pdfork

fork wrapper that uses process descriptors (pdfork) on FreeBSD and normal fork elsewhere

2 releases

Uses old Rust 2015

0.1.1 Oct 2, 2022
0.1.0 Jun 9, 2018

#943 in Unix APIs

Unlicense

5KB
58 lines

unlicense crates.io

pdfork

A Rust fork wrapper that uses process descriptors (pdfork) on FreeBSD and normal fork elsewhere.

Process descriptors are like file descriptors but for processes:

  • they are immune to PID race conditions (they track the exact process in the kernel);
  • they work in the Capsicum capability mode sandbox.
extern crate libc;
extern crate pdfork;
use pdfork::*;

match fork() {
    ForkResult::Fail => panic!("fork"),
    ForkResult::Parent(child_proc) => {
        // do stuff
        // you can access child_proc.child_pid on any platform
        // you can also access child_proc.child_pd on FreeBSD
        if !child_proc.signal(libc::SIGTERM) {
            panic!("sigterm");
        }
    },
    ForkResult::Child => {
        // do stuff
    }
}

Contributing

By participating in this project you agree to follow the Contributor Code of Conduct.

The list of contributors is available on GitHub.

License

This is free and unencumbered software released into the public domain.
For more information, please refer to the UNLICENSE file or unlicense.org.

Dependencies

~43KB