Re:The Various Kinds of IO – Blocking, Non-Blocking, Multipl...
by mjw1007 on Monday May 07, 2018 @03:46AM
(#17011025)
You might be piping its output into `head` or `more`.
Re:The Various Kinds of IO – Blocking, Non-Blocking, Multipl...
by ajross on Monday May 07, 2018 @01:15PM
(#17014486)
Exactly. Also it generally relies on every process everywhere to properly handle an error return from write(). If you launch a big pipe from the shell and just one stage goofs this up and keeps writing after error, the whole thing will stall until you Ctrl-C or otherwise manually kill the process group, which will wreck whatever result you were trying to get from the (already completed successfully!) "head" or "cut" or whatever.
Basically it's a very sane robustness choice and one of the great ideas of classic unix. It's just surprising the first time you stumble over it.
I've never understood this choice myself. It has always seemed unhelpful given that the read/write returns an error anyhow. Why is it a helpful default?