Redirecionando a entrada do aplicativo (java), mas ainda permitindo o stdin no BASH

Estou um pouco confuso, eu estava trabalhando ontem, mas parou de aceitar o stdin redirecionado, quase magicamente.

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

Este estava funcionando bem, eu podia ecoar as coisas para inputfifo e o aplicativo conseguiu, e também poderia digitar diretamente no console. Até funcionou na tela. Absolutamente nada mudou em termos de código, mas o stdin redirecionado parou de funcionar. Tentei alterar o descritor de arquivo para 9 ou até 127, mas nenhum deles foi corrigid

Estou esquecendo alguma coisa? Existe um motivo específico para que ele quebrou e não funcione mais?

(Estou usando isso em vez de enviar entrada para a própria tela porque inicio a tela desanexada e ela se recusa a receber entrada, a menos que tenha sido anexada a pelo menos uma vez, não sei se isso é um bug ou se destina)

questionAnswers(4)

yourAnswerToTheQuestion