vv-agent 0.4.1

VectorVein agent runtime, SDK, CLI, tools, and workspace backends
Documentation
use std::process::Child;
use std::time::Duration;

use super::capture::wait_for_child;
use super::platform::kill_process_group_or_child;

pub fn kill_process_tree(child: &mut Child) {
    if child.try_wait().ok().flatten().is_some() {
        return;
    }
    kill_process_group_or_child(child, false);
    if wait_for_child(child, Duration::from_millis(500))
        .ok()
        .flatten()
        .is_some()
    {
        return;
    }
    kill_process_group_or_child(child, true);
    let _ = wait_for_child(child, Duration::from_millis(500));
}