我必須做出一個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