Estoy creando un proceso en Windows desde Java. Mi problema es que este proceso no termina. He aquí un ejemplo de programa:Proceso de Windows ejecutado desde Java que no termina
import java.io.IOException;
public class Test {
/**
* @param args
* @throws IOException
* @throws InterruptedException
*/
public static void main(String[] args) throws IOException,
InterruptedException {
Process process = Runtime.getRuntime().exec("cmd /c dir");
process.waitFor();
}
}
Por razones ajenas a mi entender, este programa nunca se completa. Esto es cierto si "cmd/c dir" se reemplaza con ipconfig y otras cosas.
Veo usando ProcessExplorer que java crea el proceso de cmd. Esta muestra es obviamente una simplificación; en mi programa original encontré que si llamo a process.destroy() después de un tiempo y verifico el resultado del proceso cmd, el comando se ejecuta con éxito.
He intentado esto con varias versiones de Java 1.5 y 1.6. Mi sistema operativo es Windows XP Pro, SP 2.
+1 para detectar el problema de pasar el argumento también. –
No es del todo correcto. Los documentos API para exec (String) indican que el argumento es "un comando del sistema", sin una definición más cercana de "comando del sistema". No es improbable que JVM simplemente pase la cadena a cmd.exe. – JesperE
¡Gracias por la respuesta y el enlace! Debería tener la oportunidad de verificarlo en la máquina problemática el domingo. En realidad, los argumentos se pasan correctamente; Puedo verlos en Process Explorer. –