JDK6 Everything you ever wanted to know and should know about Java Runtime.exec(). Tout ce que vous avez toujours voulu savoir et devraient savoir sur Java Runtime.exec ().

This old but still golden Cette ancienne mais toujours d'or article l'article is an excellent guide to using Runtime.exec(). est un excellent guide à utiliser Runtime.exec (). The key points he discusses are: Les principaux points qu'il aborde sont les suivants:
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. Vous devez assécher les flux d'entrée pour prévenir l'échec en raison de rapidement écrire le flux d'entrée ou de lire les flux de sortie du sous-mai cause de la sous-bloc, et même impasse.

2. Use waitFor() instead of exitValue() when you want to wait for the process to finish. Utilisez waitFor () au lieu de exitValue () lorsque vous souhaitez attendre pour le processus à la fin.

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 () ne serait pas directement exécuter des commandes shell comme dir / ls, copier / cp etc Vous avez besoin d'invoquer le shell cmd.exe / bash / sh et passer des commandes shell. For example in windows your command array to execute dir would be as follows: Par exemple, dans les fenêtres de votre tableau de commande à exécuter dir serait comme suit:
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. Personnellement j'ai utilisé avec succès Runtime.exec () à plusieurs reprises. Any C programmer should quickly find equivalence with fork and system calls in C language. Tout programmeur C doit trouver rapidement l'équivalence avec la fourche et des appels système en langage C. As always RTFM. Comme toujours RTFM.