Não tenho reputação suficiente para escrever comentários, por isso escrevi como uma resposta.
O que você quer dizer com enforcar? O que acontece do que você executa pipe_reader.sh
e pipe_writer.sh
em outro terminal?
Além disso, depois de executar os dois scripts, o que o comando:
ls -al /proc/$(pgrep pipe_reader.sh)/fd
show?
Talvez você tenha executado vários scripts .pipe_reader, de modo que apenas o primeiro receba a saída pipe_writer? Certifique-se de que
ps aux | grep pipe_reader | grep -v grep | wc -l
retorna 1