vv_agent/runtime/processes/
termination.rs1use std::process::Child;
2use std::time::Duration;
3
4use super::capture::wait_for_child;
5use super::platform::kill_process_group_or_child;
6
7pub fn kill_process_tree(child: &mut Child) {
8 if child.try_wait().ok().flatten().is_some() {
9 return;
10 }
11 kill_process_group_or_child(child, false);
12 if wait_for_child(child, Duration::from_millis(500))
13 .ok()
14 .flatten()
15 .is_some()
16 {
17 return;
18 }
19 kill_process_group_or_child(child, true);
20 let _ = wait_for_child(child, Duration::from_millis(500));
21}