34 lines
723 B
Rust
34 lines
723 B
Rust
use std::env;
|
|
use std::io::Result;
|
|
|
|
fn watch_pid(pid: libc::pid_t) -> Result<()> {
|
|
let mut watcher = kqueue::Watcher::new()?;
|
|
|
|
watcher.add_pid(
|
|
pid,
|
|
kqueue::EventFilter::EVFILT_PROC,
|
|
kqueue::FilterFlag::NOTE_EXIT,
|
|
)?;
|
|
|
|
watcher.watch()?;
|
|
|
|
println!("Watching for events, press Ctrl+C to stop...");
|
|
for ev in watcher.iter() {
|
|
println!("{:?}", ev);
|
|
}
|
|
|
|
Ok(())
|
|
}
|
|
|
|
fn main() {
|
|
if let Some(pid) = env::args().nth(1) {
|
|
if let Ok(npid) = pid.parse::<libc::pid_t>() {
|
|
if let Err(err) = watch_pid(npid) {
|
|
println!("{:?}", err);
|
|
}
|
|
}
|
|
} else {
|
|
println!("Usage: cargo run --example pid <pid>");
|
|
}
|
|
}
|