From 0b6c39a79caabcfb0ad780b7cccb88f66d03a259 Mon Sep 17 00:00:00 2001 From: cyber-sushi Date: Wed, 8 May 2024 18:16:39 +0200 Subject: [PATCH] Ignore output of child processes --- src/event_reader.rs | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/event_reader.rs b/src/event_reader.rs index 96e862b..85d842c 100644 --- a/src/event_reader.rs +++ b/src/event_reader.rs @@ -1,7 +1,7 @@ use std::{collections::HashMap, sync::Arc, option::Option, process::{Command, Stdio}}; use tokio::sync::Mutex; use tokio_stream::StreamExt; -use fork::{fork, setsid, Fork}; +use fork::{fork, Fork}; use evdev::{EventStream, Key, RelativeAxisType, AbsoluteAxisType, EventType, InputEvent}; use crate::virtual_devices::VirtualDevices; use crate::Config; @@ -429,11 +429,21 @@ impl EventReader { match &self.environment.sudo_user { Ok(sudo_user) => { for command in command_list { - Command::new("sh") - .arg("-c") - .arg(format!("env runuser {} -c {}", sudo_user.as_str(), command)) - .spawn() - .expect("Failed to run command."); + match fork() { + Ok(Fork::Child) => { + Command::new("sh") + .arg("-c") + .arg(format!("env runuser {} -c {}", sudo_user.as_str(), command)) + .stdin(Stdio::null()) + .stdout(Stdio::null()) + .stderr(Stdio::null()) + .spawn() + .expect("Failed to run command."); + std::process::exit(0); + }, + Ok(Fork::Parent(_)) => (), + Err(_) => std::process::exit(1), + } } }, _ => {} @@ -443,7 +453,6 @@ impl EventReader { for command in command_list { match fork() { Ok(Fork::Child) => { - setsid().unwrap(); Command::new("sh") .arg("-c") .arg(command)