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.