Expand description
A crate to wait on a child process with a particular timeout.
This crate is an implementation for Unix and Windows of the ability to wait
on a child process with a timeout specified. On Windows the implementation
is fairly trivial as it’s just a call to WaitForSingleObject
with a
timeout argument, but on Unix the implementation is much more involved. The
current implementation registers a SIGCHLD
handler and initializes some
global state. This handler also works within multi-threaded environments.
If your application is otherwise handling SIGCHLD
then bugs may arise.
§Example
use std::process::Command;
use wait_timeout::ChildExt;
use std::time::Duration;
let mut child = Command::new("foo").spawn().unwrap();
let one_sec = Duration::from_secs(1);
let status_code = match child.wait_timeout(one_sec).unwrap() {
Some(status) => status.code(),
None => {
// child hasn't exited yet
child.kill().unwrap();
child.wait().unwrap().code()
}
};
Traits§
- Extension methods for the standard
std::process::Child
type.