1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
use std::io::{Error, Result};
use crate::{AsyncCommandGroup, AsyncGroupChild};
use nix::unistd::setsid;
use tokio::process::Command;
#[async_trait::async_trait]
impl AsyncCommandGroup for Command {
fn group_spawn(&mut self) -> Result<AsyncGroupChild> {
unsafe {
self.pre_exec(|| setsid().map_err(Error::from).map(|_| ()));
}
self.spawn().map(AsyncGroupChild::new)
}
}