pub unsafe 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.
§Example
let ret = unsafe { nc::fork() };
match ret {
Err(errno) => {
eprintln!("fork() error: {}", nc::strerror(errno));
unsafe { nc::exit(1) };
}
Ok(0) => println!("[child] pid is: {}", unsafe { nc::getpid() }),
Ok(pid) => {
let mut info = nc::siginfo_t::default();
let options = nc::WEXITED;
let mut usage = nc::rusage_t::default();
let ret = unsafe { 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);
}
}
}
}