From 785aa880b1f55a169fded2484a6ff48df0440112 Mon Sep 17 00:00:00 2001 From: Ian Manske Date: Thu, 1 Aug 2024 20:55:24 -0700 Subject: [PATCH] Do not treat SIGPIPE as an error --- crates/nu-protocol/src/process/exit_status.rs | 35 ++++++++++--------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/crates/nu-protocol/src/process/exit_status.rs b/crates/nu-protocol/src/process/exit_status.rs index c2b037cfac..8ee81ef46a 100644 --- a/crates/nu-protocol/src/process/exit_status.rs +++ b/crates/nu-protocol/src/process/exit_status.rs @@ -31,24 +31,27 @@ impl ExitStatus { } => { use nix::sys::signal::Signal; - let signal_name = Signal::try_from(signal) - .map(Signal::as_str) - .unwrap_or("unknown signal") - .into(); + let sig = Signal::try_from(signal); - Err(if core_dumped { - ShellError::ProcessCoreDumped { - signal_name, - signal, - span, - } + if sig == Ok(Signal::SIGPIPE) { + // Processes often exit with SIGPIPE, but this is not an error condition. + Ok(()) } else { - ShellError::ProcessSignaled { - signal_name, - signal, - span, - } - }) + let signal_name = sig.map(Signal::as_str).unwrap_or("unknown signal").into(); + Err(if core_dumped { + ShellError::ProcessCoreDumped { + signal_name, + signal, + span, + } + } else { + ShellError::ProcessSignaled { + signal_name, + signal, + span, + } + }) + } } } }