diff --git a/src/utils/clone3.rs b/src/utils/clone3.rs index 672d3256..b6ef0d0f 100644 --- a/src/utils/clone3.rs +++ b/src/utils/clone3.rs @@ -135,6 +135,7 @@ pub fn ensure_reaper() -> c::pid_t { if let Ok(id) = env::var(REAPER_VAR) { if let Ok(id) = c::pid_t::from_str(&id) { if uapi::getppid() == id { + set_deathsig(); return id; } } @@ -157,6 +158,7 @@ pub fn ensure_reaper() -> c::pid_t { unsafe { env::set_var(REAPER_VAR, reaper_pid.to_string()); } + set_deathsig(); return reaper_pid; }; set_process_name("jay reaper"); @@ -167,3 +169,9 @@ pub fn ensure_reaper() -> c::pid_t { } process::exit(1); } + +fn set_deathsig() { + unsafe { + c::prctl(c::PR_SET_PDEATHSIG, c::SIGKILL as c::c_ulong); + } +}