Runtime.getRuntime ().exec + waitFor()

Pasky
13 de Febrero del 2006
Hola a todos,
En un programa en el que llamo a un comando externo, necesito saber cuando a terminado de ejecutarse el comando externo. Utilizando el waitFor funciona correctamente si ejecuto un programa como p.ej el notepad, el calc... sin embargo cuando intento ejecutar un comando como el dir, el waitfor se queda esperando sin devolver nunca la señal de proceso finalizado ¿alguien sabe a que se debe? He probado a ejecutar "cmd /c dir","cmd dir","dir", pero no hay forma...
Adjunto código:


try{
Process p =Runtime.getRuntime ().exec ( "calc" ) ;
p.waitFor();
}catch(IOException e){
System.out.println("ERROR IOException: "+e);
} catch(InterruptedException e) {
System.out.println("ERROR InterruptedException: "+e);
}

Diego
13 de Febrero del 2006
Utiliza el método public String[] list() de java.io.File para obtener los archivos de un directorio que además de funcionar es portable.

Pasky
13 de Febrero del 2006
En realidad no quiero un listado de los archivos. Lo del dir era una prueba. Lo que intento ejecutar es mkisofs para crear una imagen iso y despues grabarla. Al ejecutar este archivo tengo el mismo problema que al ejecutar un dir. El problema parece que se reproduce un equellos ejecutables que finalizan por si mismos. Ejecutan algo y terminan por si mismos. En el caso de ejecutar el notepad, hay que cerrar la ventana del notepad, es entonces cuando el waitfor devuelve el control. Muchas gracias de todos modos.

malexicarum
13 de Febrero del 2006
que pasara (en windows) si creas un .bat y lo ejecutas??? tal vez asi puedas saber cuando termina el proceso.

Isabel82
13 de Febrero del 2006
Revisa este enlace, donde hablan de los errores que se cometen con el manejo de RunTime: http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html