Skip to main content

vv_agent/runtime/processes/
termination.rs

1use 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}