JDK6 Everything you ever wanted to know and should know about Java Runtime.exec(). Todo lo que usted siempre quiso saber y debe saber acerca de Java Runtime.exec ().

This old but still golden Este viejo, pero todavía Oro article artículo is an excellent guide to using Runtime.exec(). es una excelente guía para usar Runtime.exec (). The key points he discusses are: Los principales puntos que se analizan son los siguientes:
1. You need to drain the input stream to prevent because failure to promptly write the input stream or read the output stream of the subprocess may cause the subprocess to block, and even deadlock. Usted necesita para drenar el flujo de entrada para evitar el fracaso, porque para escribir rápidamente el flujo de entrada o leer la secuencia de salida del subproceso puede causar el subproceso de bloquear, e incluso estancamiento.

2. Use waitFor() instead of exitValue() when you want to wait for the process to finish. Use waitFor () en lugar de exitValue () cuando se quiere esperar a que el proceso hasta el final.

3. Runtime.exec() wouldn’t directly execute shell commands like dir / ls, copy / cp etc. You need to invoke the shell cmd.exe / bash / sh and pass the shell commands. Runtime.exec () no ejecutar directamente los comandos shell como dir / ls, copy / cp etc necesidad de invocar el shell cmd.exe / bash / sh y pasar comandos de la shell. For example in windows your command array to execute dir would be as follows: Por ejemplo, en las ventanas de su comando conjunto para ejecutar dir sería la siguiente:
cmd[0] = “cmd.exe” ; cmd [0] = "cmd.exe";
cmd[1] = “/C” ; cmd [1] = "/ C";
cmd[2] = “dir”; cmd [2] = "dir";

Personally I have successfully used Runtime.exec() on several occasions. Personalmente he utilizado con éxito Runtime.exec () en varias ocasiones. Any C programmer should quickly find equivalence with fork and system calls in C language. Cualquier programador de C debe encontrar rápidamente la equivalencia con un tenedor y llamadas al sistema en lenguaje C. As always RTFM. Como siempre, RTFM.