Hello Bob.
I wasn't clear enough.
My goal was to do different things on the first lines and the last lines of
same input, without using storage, thus using piped processes.
Then I used tee, to fork the pipe into two processes.
In my post before, I wanted to show three ways that work, including (head; cat)
that does exactly the same as what would do head with the option I suggested in
my initial post.
Opposite to that, my original way that fails :
rm /tmp/fifo1
mkfifo /tmp/fifo1
cat /tmp/fifo1|head -n2|sed 's/^/head &/' &
tee /tmp/fifo1|tail -n2|sed 's/^/tail &/'
That way, the /tmp/fifo1 fifo propagates SIGPIPE ahead to tee as soon as head
has finished, then tee stops, and tail doesn't read the expected last lines,
instead just the lines before tee aborts and EOF is read on pipe. The effect is
observable on large input, like /usr/share/mysql/errmsg-utf8.txt
Also tried tee -i to ignore interrupts, but it is not the purpose of this
option I suppose. No effect in our case.