Проблема заключается в том, что при выходе из echo fifo достигнет конца файла, поэтому ваш поток чтения выдаст событие end, а поток чтения закроет дескриптор файла и больше не будет принимать больше данных..
Если у вас есть два долгоживущих процесса на обоих концах, если есть fifo, то это не будет проблемой, но поскольку echo записывает, а затем закрывается, он быстро останавливает поток узлов.
Ваш лучший вариант, вероятно, состоит в том, чтобы просто заново создать поток всякий раз, когда текущий поток запускает 'end'.
Не уверен, что есть лучший способ.