Re: bug#17981: [PATCH] maint.mk: less syntax-check noise when SIGPIPE is ignored

Paul Eggert <[email protected]>
Newsgroups gmane.comp.gnu.utils.bugs
Organization UCLA Computer Science Department
Message-ID <53C04FF0.20607__44659.6580245115$1405112371$gmane$org@cs.ucla.edu>
On 07/08/2014 12:42 PM, Eric Blake wrote:
> It is unclear
> at this point whether POSIX would recommend that filter
> applications should_always_  exit with 0 status on pipe failure,
> or only do this for EPIPE write failures when SIGPIPE is ignored,
> or whether it should be optional behavior that must be explicitly
> enabled via a command-line option and/or system-wide environment
> variable.

None of these options sound appealing, I'm afraid.   The first two would 
be an incompatible change to longstanding standard behavior.  A 
system-wide environment variable would be problematic for all the usual 
reaosns.  A command-line option would be a pain to use (what? I have to 
modify all my shell scripts?).

Instead, how about this idea?  Change the behavior of the shell so that 
SIGPIPE is not ignored in a pipeline (except in the pipeline's last 
member of course), even if it is ignored in the parent.  This is also a 
change to POSIX, but it's a relatively minor one.  Or, if we want to be 
conservative about it, we could make the new behavior depend on a new 
shell option.  Either way, this would solve the problem without having 
to change grep, sed, etc.

We might also want to have a way to reenable traps in the shell when 
they're disabled; that's been a longstanding problem even aside from 
this SIGPIPE business.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.