use std::time::Duration;
use nix::unistd::{fork, ForkResult};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let id = std::process::id();
println!("Process ID is {id}");
match unsafe { fork() } {
Ok(ForkResult::Parent { .. }) => {
println!("Parent process: going to sleep and exit");
std::thread::sleep(Duration::from_secs(1));
std::process::exit(0);
}
Ok(ForkResult::Child) => {
let id = std::process::id();
println!("Child Process ID is {id}");
std::process::exit(0);
}
Err(_) => println!("Fork failed"),
}
Ok(())
}