Попробуйте использовать один fifo и повторить эхо в дескрипторе файла r / w. Используйте символ ASCII NUL для завершения ввода (строк), чтобы команда чтения продолжала считывание до байта NULL (или EOF).

ного сбит с толку, вчера у меня это работало, но оно просто перестало принимать перенаправленный стандарт, почти волшебным образом.

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

Это работало нормально, я мог выводить что-то в inputfifo, и приложение получало его, и я мог печатать прямо в его консоли. Это даже работало через экран. Абсолютно ничего в коде не изменилось, но переадресованный stdin перестал работать. Я попытался изменить дескриптор файла на 9 или даже 127, но ни один не исправил.

Я что-то забыл? Есть ли конкретная причина, по которой он сломался и больше не работает?

(Я использую это вместо того, чтобы отправлять ввод на сам экран, потому что я запускаю отсоединенный экран, и он отказывается получать ввод, если он не был подключен по крайней мере один раз, я не знаю, является ли это ошибкой или предназначением)

Ответы на вопрос(4)

Ваш ответ на вопрос