фоновый процесс в Java, прослушивающий стандартный ввод

Я должен сделать программу Java, которая, когда пользователь вводит 0, должна выйти. нет проблем с написанием кода Java.

int cmd = read();
System.out.println("got command : " + cmd);
if (cmd == 48) { // ASCII code for 0
System.exit(0);

Я хочу запустить этот процесс, используя скрипт start -stop в Linux. Я также могу сделать это, используя &илиnohup

case "$1" in    
  'start')
    if [ -f myfifo ]; then
      rm myfifo
    fi
    mkfifo myfifo
    cat > myfifo &
    echo $! > myfifo-cat-pid
    java -jar myjar.jar >/dev/null 2>&1 0<myfifo &
    echo "Started process: "$!
    ;;

  'stop')
    echo 0 > myfifo
    echo "Stopped process: "
    rm myfifo
    ;;
esac

Моя проблема в том, что как только я запускаю этот процесс, он читает ввод -1. Хотя я хочу читать из stdinput, когда что-то явно отображается на нем, т.е. вызывается остановка. Просто мне нужна программа, которая будет явно закрыта скриптом оболочки. Я очень старался. Помоги мне.

Изменить:

Я просто хочу закрыть программу, когда пользователь нажимает q или любое подобное событие, и мне не нужен бесконечный цикл в коде. Любой другой подход, такой как прослушивание других событий, также поможет, если это возможно. Мой код не должен запрашивать событие. Я пробовал Jnotify, которые просматривают каталог и вызывают событие, когда файл создается или удаляется в этом каталоге. Но, к сожалению, у них нет поддержки SunOS.:(

5
задан Abhishek bhutra 25 July 2012 в 08:32
поделиться