1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use std::{
	io::{Error, Result},
	os::unix::process::CommandExt,
	process::Command,
};

use crate::{CommandGroup, GroupChild};
use nix::unistd::setsid;

impl CommandGroup for Command {
	fn group_spawn(&mut self) -> Result<GroupChild> {
		unsafe {
			self.pre_exec(|| setsid().map_err(Error::from).map(|_| ()));
		}

		self.spawn().map(GroupChild::new)
	}
}