On June 9, 2022 3:19:56 AM GMT+02:00, Philippe Meunier <meun...@ccs.neu.edu> 
wrote:
>Hi,
>
>Try:
>
>$ mkfifo fifo
>$ while true; do /bin/echo aaaa > fifo; echo -n "$? "; done
>
>then in another shell:
>
>$ tail -f fifo
>
>and everything works as expected.  Now repeatedly interrupt and restart
>this tail(1) command and from time to time you'll see that /bin/echo dies
>with status 141 because of a SIGPIPE signal.  My guess is that this happens
>when /bin/echo opens the FIFO and tail(1) then closes it (when it's
>interrupted) before /bin/echo has had the chance to do the write so the
>write then gets a SIGPIPE.  So far so good.
>
>Now replace /bin/echo with ksh's builtin echo command:
>
>$ while true; do echo aaaa > fifo; echo -n "$? "; done
>
>and again repeatedly start / interrupt / restart the tail(1) command above.
>The builtin echo command is faster than /bin/echo so it might take a few
>more tries but sooner or later the builtin echo command gets a SIGPIPE and
>then ksh itself dies, which is... unexpected.
>
>I tried with bash and the behavior is the same as with ksh.
>
>I tried with zsh and I get "echo: write error: broken pipe" and zsh doesn't
>die, which is what I would have expected from ksh (and bash).

Why? Is there some reference you can point at which suggests your expectations 
are valid?

Otherwise, 

   trap : PIPE

might help you out.

/Alexander

>
>So that looks to me like a bug in ksh (and bash).
>
>Cheers,
>
>Philippe
>
>

Reply via email to