Я немного сбит с толку, вчера у меня это работало, но оно просто перестало принимать перенаправленный стандартный ввод, почти магически.
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, но ни один не исправил.
Я что-то забыл?Есть ли какая-то конкретная причина, по которой он сломался и больше не работает?
(я использую это вместо отправки ввода на сам экран, потому что я запускаю отключенный экран, и он отказывается принимать входные данные, если он не был присоединен по крайней мереоднажды, я не знаю, является ли это ошибкой или намерением)