From 8ce553f28a2ae0d022a774e8341e66dca4079b63 Mon Sep 17 00:00:00 2001 From: Joe Wilm Date: Fri, 29 Dec 2017 09:19:14 -0800 Subject: [PATCH] Fix zombie children (#976) Resolves #973 --- src/input.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/input.rs b/src/input.rs index 1090f12d..6c113ab4 100644 --- a/src/input.rs +++ b/src/input.rs @@ -22,6 +22,7 @@ use std::borrow::Cow; use std::mem; use std::process::Command; use std::time::Instant; +use std::os::unix::process::CommandExt; use copypasta::{Clipboard, Load, Buffer}; use glutin::{ElementState, VirtualKeyCode, MouseButton, TouchPhase, MouseScrollDelta}; @@ -200,7 +201,16 @@ impl Action { }, Action::Command(ref program, ref args) => { trace!("running command: {} {:?}", program, args); - match Command::new(program).args(args).spawn() { + match Command::new(program) + .args(args) + .before_exec(|| { + // Detach forked process from Alacritty. This will cause + // init or whatever to clean up child processes for us. + unsafe { ::libc::daemon(1, 0); } + Ok(()) + }) + .spawn() + { Ok(child) => { debug!("spawned new proc with pid: {}", child.id()); },