On Fri, 7 Jul 2023 at 17:07, Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote: > > > That is, do we want SIGWINCH or SIGALRM to result in a short read? > > Now, that's a different issue, and is actually handled by the signal > layer: a signal that is ignored (where "ignored" includes the case of > "default handler") will be dropped early, exactly because we don't > want to interrupt things like tty or pipe reads when you resize the > window. In case you care, it's prepare_signal() -> sig_ignored() -> sig_task_ignored() -> sig_handler_ignored() logic that does this short-circuiting. And while I don't think it's required by POSIX, this was definitely a case where lots of programs that *don't* use any signal handlers at all are very much not expecting to see -EINTR as a return value, and used to break exactly on things like SIGWINCH when reading from a tty or a pipe. But that logic goes back to before linux-1.0. In fact, I think it goes back to at least 0.99.10 (June '93). Linus