Redireccionando la entrada de la aplicación (java) pero aún permitiendo la entrada estándar en BASH

Estoy un poco confundido, tuve esto funcionando ayer, pero simplemente dejó de aceptar el stdin redirigido, casi mágicamente.

set -m
mkfifo inputfifo
mkfifo inputfifo_helper
((while true; do cat inputfifo; done) > inputfifo_helper)&
trap "rm -f inputfifo inputfifo_helper java.pid; kill $!" EXIT

exec 3<&0
(cat <&3 > inputfifo)&

NOW=$(date +"%b-%d-%y-%T")

if ! [ -d "logs" ]; then
    mkdir logs
fi

if [ -f "server.log" ]; then
    mv server.log logs/server-$NOW.log
fi
java <inputfifo_helper -jar $SERVER_FILE & echo $! > java.pid && fg

Esto funcionaba bien, podía hacer eco de las cosas en inputfifo y la aplicación lo consiguió, y también podía escribir directamente en su consola. Incluso funcionó a través de la pantalla. Absolutamente nada en cuanto al código ha cambiado, pero el stdin redirigido ha dejado de funcionar. Intenté cambiar el descriptor de archivo a 9, o incluso 127, pero ninguno lo arregló.

¿Estoy olvidando algo? ¿Hay alguna razón específica por la que se rompió y ya no funciona?

(Estoy usando esto en lugar de enviar información a la pantalla en sí porque inicio la pantalla separada y se niega a recibir información a menos que se haya conectado al menos una vez, no sé si esto es un error o si fue intencionado)

Respuestas a la pregunta(4)

Su respuesta a la pregunta