diff --git a/src/uu/timeout/src/timeout.rs b/src/uu/timeout/src/timeout.rs index 0de1e3706..ccc97403d 100644 --- a/src/uu/timeout/src/timeout.rs +++ b/src/uu/timeout/src/timeout.rs @@ -343,8 +343,15 @@ fn timeout( send_signal(process, signal, foreground); match kill_after { None => { + let status = process.wait()?; if preserve_status { - Err(ExitStatus::SignalSent(signal).into()) + if let Some(ec) = status.code() { + Err(ec.into()) + } else if let Some(sc) = status.signal() { + Err(ExitStatus::SignalSent(sc.try_into().unwrap()).into()) + } else { + Err(ExitStatus::CommandTimedOut.into()) + } } else { Err(ExitStatus::CommandTimedOut.into()) }