Skip to main content

ante_exec/
lib.rs

1use std::sync::{Mutex, MutexGuard};
2
3pub mod buffer;
4pub mod handle;
5pub mod pool;
6pub mod process_group;
7pub mod receiver;
8pub mod subprocess;
9
10pub use buffer::HeadTailBuffer;
11pub use handle::{OutputChunk, ProcessHandle, SpawnedProcess, Stream};
12pub use pool::{
13    ExecError, ExecRequest, ExecResponse, PollRequest, PoolConfig, ProcessPool, StdinRequest,
14};
15pub use process_group::{kill_by_pid, kill_process_group, process_group_is_alive};
16pub use receiver::OutputReceiver;
17pub use subprocess::{
18    CommandOptions, RunOutput, StdinMode, run_with_timeout, terminate_child_process_group,
19};
20
21pub(crate) fn lock_or_recover<T>(mutex: &Mutex<T>) -> MutexGuard<'_, T> {
22    match mutex.lock() {
23        Ok(guard) => guard,
24        Err(poisoned) => poisoned.into_inner(),
25    }
26}
27
28#[cfg(test)]
29mod tests;