[Toybox] default SIGPIPE handler that calls _exit(0)?

enh enh at google.com
Mon Apr 27 08:36:53 PDT 2015


On Sun, Apr 26, 2015 at 7:30 PM, Rich Felker <dalias at libc.org> wrote:
> On Sat, Apr 25, 2015 at 12:14:44PM -0700, enh wrote:
>> what's the plan wrt SIGPIPE? the desktop is pretty inconsistent. many
>> (but not all) commands install a signal handler that does _exit(0).
>> others (coreutils 8.21's ls, say) do nothing. normally "what you do
>> about SIGPIPE" isn't a problem but on Android that leads to a crash
>> report and people filing "ls crashed" bugs against me. (our default
>> shell PS setup is also noisy about crashes.)
>
> Why not just *block* SIGPIPE (with sigprocmask) so that the write
> returns an error (EPIPE) and the program applies the same logic it
> would for any other write error?

toybox does a little better than toolbox there thanks to xwrite, but
i've yet never met anyone who checks the return value of printf...

plus there's the question of whether giving up because you're writing
to a broken pipe is an error exit or not. you could add a special case
to xwrite (and add xprintf and xputs and...), but since the whole idea
is that code shouldn't have to care, it's easier just to install a
signal handler that does _exit(0).

-- 
Elliott Hughes - http://who/enh - http://jessies.org/~enh/
Android native code/tools questions? Mail me/drop by/add me as a reviewer.

 1430149013.0


More information about the Toybox mailing list