Ich muss ein Java-Programm machen, dass, wenn Benutzer 0 eingibt, sollte es beenden. Kein Problem beim Schreiben in Java-Code.Hintergrundprozess in Java Anhören stdin
int cmd = read();
System.out.println("got command : " + cmd);
if (cmd == 48) { // ASCII code for 0
System.exit(0);
Ich möchte diesen Prozess mit Start-Stop-Skript in Linux ausführen. Ich bin in der Lage zu tun, dass &
oder 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
Mein Problem besteht darin, so schnell wie ich diesen Prozess führen Sie es Eingang lesen -1. Während ich von stdinput lesen möchte, wenn etwas explizit dazu gehört, d. H. Stop wird aufgerufen. Ich brauche einfach ein Programm, das explizit vom Shell-Skript geschlossen wird. Ich habe mich bemüht. Hilf mir.
Edit:
Ich will nur das Programm schließen, wenn der Benutzer drücken Sie q oder eine solche Veranstaltung und wollen in Code Endlosschleife nicht. Jeder andere Ansatz wie das Hören anderer Ereignisse wird auch helfen, wenn möglich. Mein Code sollte nicht nach Ereignissen abgefragt werden. Ich habe versucht Jnotify
, die ein Verzeichnis beobachten und ein Ereignis auslösen, wenn eine Datei in diesem Verzeichnis erstellt oder gelöscht wird. Aber glücklicherweise haben sie keine Unterstützung für SunOS. :(
Wie lesen Sie Werte? – poussma
mit System.in.read(); Auch ich habe es versucht, mit BufferReader –
hum ... Sind Sie sicher, dass die myfifo existiert und enthält alles drin? System.in.read() soll gut funktionieren ... was macht das 'mkfifo'? – poussma