nixを使います。
nix = “0.16.1”
use nix::unistd::{getpid};
fn main() {
    println!("My id is {}", getpid());
}
My id is 577891
### 子プロセスの生成
use nix::unistd::{fork, getpid, getppid, ForkResult};
use nix::sys::wait::waitpid;
use std::process::exit;
fn main() {
    let num_children = 2;
    start_parent(num_children);
}
fn start_parent(num_children: u32) {
    println!("Parent: I am the parent process");
    println!("Parent PID is {}", getpid());
    for i in 0..num_children {
        run_child();
    }
}
fn run_child() {
    let child_pid = match fork() {
        Ok(ForkResult::Parent {child, ..}) => {
            println!("Main({}) forked child ({})", getpid(), child);
            child
        },
        Ok(ForkResult::Child) => {
            println!("Child({}) PPID is ({})", getpid(), getppid());
            exit(0);
        },
        Err(_) => panic!("fork failed"),
    };
    match waitpid(child_pid, None) {
        Ok(status) => println!(""),
        Err(_) => println!("waitpid() failed"),
    }
}
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.20s
     Running `target/debug/parallel`
Parent: I am the parent process
Parent PID is 579363
Main(579363) forked child (579390)
Child(579390) PPID is (579363)
Main(579363) forked child (579391)
Child(579391) PPID is (579363)
おおおおおおおおお、中々素晴らしい!