ユーザーが 0 を入力すると終了する Java プログラムを作成する必要があります。Javaコードで書いても問題ありません。
int cmd = read();
System.out.println("got command : " + cmd);
if (cmd == 48) { // ASCII code for 0
System.exit(0);
Linux で start-stop スクリプトを使用してこのプロセスを実行したいと考えています。&
またはを使用してそれを行うこともできます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 はサポートされていません。:(