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)
	}
}