use crate::error::RunnerError;
use std::time::Duration;
pub(crate) async fn terminate_process_unix(pid: u32) -> Result<(), RunnerError> {
use nix::sys::signal::{Signal, killpg};
use nix::unistd::Pid;
let pgid = Pid::from_raw(pid as i32);
let _ = killpg(pgid, Signal::SIGTERM);
let grace_period = Duration::from_secs(5);
tokio::time::sleep(grace_period).await;
let _ = killpg(pgid, Signal::SIGKILL);
Ok(())
}