Tengo que hacer un programa java que cuando el usuario ingrese 0 debe salir. no hay problema escribiendo en código Java.proceso en segundo plano en java escuchando stdin
int cmd = read();
System.out.println("got command : " + cmd);
if (cmd == 48) { // ASCII code for 0
System.exit(0);
Quiero ejecutar este proceso utilizando el script start-stop en linux. También estoy siendo capaz de hacer que el uso de &
o 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
Mi problema es tan pronto como funciono con este proceso se lee la entrada -1. Aunque quiero leer de stdinput cuando algo se repite explícitamente, es decir, se llama a stop. Simplemente necesito un programa que se cierre por script de shell de forma explícita. Lo he intentado mucho. Ayuadame.
Editar:
sólo quiero cerrar el programa cuando el usuario pulse Q o cualquier evento y no quiero bucle infinito en el código. Cualquier otro enfoque como escuchar otros eventos también ayudará si es posible. Mi código no debería ser una encuesta para el evento. He intentado Jnotify
mirar un directorio y levantar un evento cuando el archivo se crea o elimina en ese directorio. Pero, mala suerte, no tienen soporte para SunOS. :(
How di you read values? – poussma
usando System.in.read(); También lo he intentado usando BufferReader –
hum ... ¿Estás seguro de que el myfifo existe y contiene algo allí? System.in.read() está diseñado para funcionar bien ... ¿qué significa 'mkfifo'? – poussma