From 38b15c973653243d99cc5f814d0b23ea2f385ddd Mon Sep 17 00:00:00 2001 From: Ulrich Hornung Date: Tue, 12 Mar 2024 19:04:46 +0100 Subject: [PATCH] wait for child to stop after sending signal --- src/uu/timeout/src/timeout.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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()) }