On Mon, 2009-07-20 at 10:52 +0100, Charles Forsyth wrote:
> you don't really want to get "write error" printed from every
> process in a pipe line such as
As much as I thought that could be an issue, I could NOT actually
make many of the commands I tried produce this message on a
modified 9vx:
term% ls | date
....
Some did produce a message, but somehow it didn't look all that
problematic (helpful, in fact -- letting me know that somewhere
in my pipe there was a problem and not all of the data went through):
term% awk 'BEGIN { printf("Hello\n"); }' | date
awk: write error on stdout
> slowly-compute-big-file | dosomemore | andyetmore | sed -n
> '/something/;p;q'
> or even
> slowly-compute-big-file | badusageofsomething
> where the latter prints a "usage" message and quits.
> you want to make sure the previous commands in the pipeline stop, right away.
One again -- just to make things clear -- slowly-compute-big-file WILL
NOT stop before it attempts the first actual write on a closed pipe. It
will merrily compute away. A trivial:
cpu% sleep 1000000 | sleep 1
would be enough to verify your hypothesis.
Thanks,
Roman.