Isso acontece porque o <(
process )
não é adequadamente controlado pelo trabalho - é apenas bifurcado e esquecido. Isso não importa na maior parte do tempo, porque quase assim que nasce, o processo é colocado em um grupo de processos separado e em segundo plano. Para o instante que o shell requer para abrir entrada e saída para esse processo, no entanto, esse é o grupo de processo em primeiro plano e, como tal, vulnerável a SIGINT - a menos que seja preso ou ignorado como seu shell interativo geralmente faz.
A coisa é, no entanto: você tem um impasse de pipe lá. Quando o pai tenta abrir a saída para esse processo, bloqueie os blocos. Ele nunca tem a chance de alterar o grupo de processos e todo o restante porque quando você CTRL+C
o grupo de primeiro plano é morto - é enviado SIGINT - e quando o grupo de primeiro plano morre e o pai não pode retomar o controle porque ainda está bloqueado em um tubo, o terminal envia um HUP porque não há ninguém em casa. kaboom
Você precisa primeiro de um escritor, depois de um leitor para cada canal que abrir antes de abrir outro.