Sto creando un processo su Windows da Java. Il mio problema è che questo processo non termina. Ecco un esempio di programma:Processo di Windows eseguito da Java non terminato
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();
}
}
Per ragioni al di là della mia comprensione, questo programma non viene mai completato. Questo è vero se "cmd/c dir" viene sostituito con ipconfig e altre cose.
Posso vedere utilizzando ProcessExplorer che java crea il processo di cmd. Questo esempio è ovviamente una semplificazione; nel mio programma originale ho trovato che se chiamo process.destroy() dopo un po 'e controllo l'output del processo cmd, il comando è eseguito con successo.
Ho provato questo con varie versioni di Java 1.5 e 1.6. Il mio sistema operativo è Windows XP Pro, SP 2.
+1 per catturare anche l'argomento che passa il problema. –
Non sei completamente corretto. L'API doc per exec (String) afferma che l'argomento è "un comando di sistema", senza una definizione più precisa di "comando di sistema". Non è improbabile che la JVM passi semplicemente la stringa a cmd.exe. – JesperE
Grazie per la risposta e il link! Dovrei avere la possibilità di controllarlo sulla macchina problematica di domenica. In realtà, gli argomenti vengono passati correttamente; Posso vederli in Process Explorer. –