Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > gnu.bash.bug > #14930

Re: write() not retried after EINTR in printf and echo

From Bize Ma <binaryzebra@gmail.com>
Newsgroups gnu.bash.bug
Subject Re: write() not retried after EINTR in printf and echo
Date 2018-12-19 22:15 -0500
Message-ID <mailman.5984.1545275742.1284.bug-bash@gnu.org> (permalink)
References <CAFra36hm9XcAgwqr7Yp_giX+kiSEp__x4Mc5Qn=eqgUdSdLA7Q@mail.gmail.com> <eefa8e88-104a-1fd3-b505-a279778ba291@case.edu>

Show all headers | View raw


Chet Ramey (<chet.ramey@case.edu>) wrote:

> And yet, when you look at the source, the signal handlers are installed
> with SA_RESTART. For example,
>


> #  if defined (SIGWINCH)
>   act.sa_flags = (sig == SIGWINCH) ? SA_RESTART : 0;
> #  else
>   act.sa_flags = 0;
> #  endif /* SIGWINCH */
>
> in lib/readline/signals.c:rl_set_sighandler().
>
>
True for SIGWINCH, but "write error: Interrupted system call"
is still exposed to users (which it shouldn't) for other signals:

{   pid=$BASHPID; trap : USR1;
    (sleep 1; kill -USR1 "$pid") &
    printf %0100000d 1;
} | sleep 20

Back to gnu.bash.bug | Previous | Next | Find similar | Unroll thread


Thread

Re: write() not retried after EINTR in printf and echo Bize Ma <binaryzebra@gmail.com> - 2018-12-19 22:15 -0500

csiph-web