On 21/03/24 18:08, Oğuz wrote:
On Thu, Mar 21, 2024 at 7:13 PM Gioele Barabucci <gio...@svario.it> wrote:
Regardless of the reason for the SIGPIPE, the reporter expects the loop
to carry on indefinitely (`while true; ...`).
Then he should do `trap '' PIPE' before the loop.
it is incorrect that > SIGPIPE terminates the subshell.
Why?
For various reasons. First of all, because it confuses users (there are
various bug reports in Debian for this specific issue).
More technically, because non-builtin commands are treated differently,
for example /bin/echo (from <https://bugs.debian.org/423207>):
$ rm -f /tmp/f && mkfifo /tmp/f
$ true </tmp/f &
$ exec 3>/tmp/f
$ bash -c 'exec >&3; exit 42'; echo $?
42
$ bash -c 'exec >&3; echo hi; exit 42'; echo $?
141
$ bash -c 'exec >&3; /bin/echo hi; exit 42'; echo $?
42
...and because under the right conditions it may seemingly randomly
close the interactive shell of the user:
$ rm -f /tmp/f && mkfifo /tmp/f
$ true </tmp/f &
$ exec 3>/tmp/f
$ exec >&3
$ echo
$ echo hi
* shell exits *
Regards,
--
Gioele Barabucci