사용자가 0을 입력하면 종료해야하는 Java 프로그램을 만들어야합니다. 자바 코드 작성에 문제 없습니다.stdin을 듣는 java의 백그라운드 프로세스
int cmd = read();
System.out.println("got command : " + cmd);
if (cmd == 48) { // ASCII code for 0
System.exit(0);
리눅스에서 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에서 읽으려는 동안, 즉 stop이 호출됩니다. 간단히 말해 쉘 스크립트에 의해 명시 적으로 닫히는 프로그램이 필요합니다. 나는 열심히 노력했다. 도와주세요.
편집 :
난 그냥 사용자 q를 눌러 또는 그러한 이벤트 및 코드에서 무한 루프를 싶지 않는 경우 프로그램을 종료 할. 가능한 경우 다른 이벤트를 청취하는 등의 다른 방법도 도움이됩니다. 내 코드는 이벤트를 위해 폴링해서는 안됩니다. 나는 Jnotify
디렉토리를 감시하고 그 디렉토리에서 파일이 생성되거나 삭제 될 때 이벤트를 발생 시키려고 시도했다. 그러나 SunOS에 대한 지원은 없다. :(
값을 어떻게 읽습니까? – poussma
using System.in.read(); 또한 BufferReader –
험을 사용하여 그것을 시도했다 ... 당신은 myfifo 존재하고 거기에 아무것도 포함되어 있습니까? System.in.read()는 잘 작동하도록되어 있습니다 ...'mkfifo'는 무엇을합니까? – poussma