東京の人はすごか技を知ってるとですね
でも、dup2( fd2[1], 1 )
を呼んだところで子がSIG_CHILD おこして終わってるみたいですよ
ltrace,strace どちらも
--- SIGCHLD (Child exited) ---
と出てます
子が終わってるので、パイプに書こうとすると SIG_PIPE を
起こすみたいですね