Function nc::waitid[][src]

pub fn waitid(
    which: i32,
    pid: pid_t,
    info: &mut siginfo_t,
    options: i32,
    ru: &mut rusage_t
) -> Result<(), Errno>
Expand description

Wait for process to change state.

let ret = nc::fork();
match ret {
    Err(errno) => {
        eprintln!("fork() error: {}", nc::strerror(errno));
        nc::exit(1);
    }
    Ok(0) => println!("[child] pid is: {}", nc::getpid()),
    Ok(pid) => {
        let mut info = nc::siginfo_t::default();
        let options = nc::WEXITED;
        let mut usage = nc::rusage_t::default();
        let ret = nc::waitid(nc::P_ALL, -1, &mut info, options, &mut usage);
        match ret {
            Err(errno) => eprintln!("waitid() error: {}", nc::strerror(errno)),
            Ok(()) => {
                let exited_pid = unsafe { info.siginfo.sifields.sigchld.pid };
                assert_eq!(pid, exited_pid);
            }
        }
    }
}