我必须做出一个Java程序,当用户输入0它应该退出。在java代码中编写没有问题。后台进程听标准输入
int cmd = read();
System.out.println("got command : " + cmd);
if (cmd == 48) { // ASCII code for 0
System.exit(0);
我想在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中读取somthing时,明确地回显它,即停止被调用。简单地说,我需要一个程序来明确地由shell脚本关闭。我努力了。帮我。
编辑:
我只想当用户按q或任何这样的事件和不想要的代码无限循环关闭程序。如果可能的话,听其他事件的任何其他方法也将有所帮助。我的代码不应该为事件进行轮询。我已经尝试了Jnotify
,它在该目录中创建或删除文件时观看目录并引发事件。但是运气不好,他们不支持SunOS。 :(
你是如何读取数值的? – poussma 2012-07-25 06:16:16
using System.in.read();我也尝试过使用BufferReader – 2012-07-25 06:20:18
嗡嗡声...你确定myfifo存在并包含任何东西吗? System.in.read()意味着可以正常工作......“mkfifo”是什么? – poussma 2012-07-25 07:08:49