PDA

View Full Version : [JAVA] Lancio processi


IngegnerCane
16-03-2009, 15:43
Ciao, ho questo problema: devo lanciare l'esecuzione di un programma con java tenendo salvato un puntatore a tale processo per poterne monitorare l'andamento(se è sempre in esecuzione oppure no) e poterlo interrompere a mio piacimento. Faccio ciò tramite l'istruzione

String comando="path+eseguibile";
ProcessBuilder pb = new ProcessBuilder(comando);
proc=pb.start();

Il problema è che questo programma (non so il motivo in quanto altri programmi non mi avevano mai dato questo problema, forse ci sarà qualche conflitto interno) parte solo quando termina il main oppure nel mio caso che sono dentro una web service parte solo dopo che ho stoppato l'application server.
Ho cercato su internet rimedi possibili ed ho trovato questa soluzione:

comandi[0]="rundll32";
comandi[1]="shell32.dll,ShellExec_RunDLL";
comandi[2]=comando;
ProcessBuilder pb = new ProcessBuilder(comandi);
Process proc=pb.start();

In questo modo viene avviata una shell che, dopo aver fatto partire la finestra con l'istruzione passata, muore subito. Ciò quindi è utilissimo perchè fa partire subito il mio programma, il problema è che l'oggetto proc adesso mi punta alla shell e quindi vede il processo già terminato dopo un attimo.
Come posso fare ad uscire da questo problema??
Grazie

sottovento
17-03-2009, 02:26
Hai gia' provato con qualcosa del tipo

Process process = Runtime.getRuntime().exec("your application"...);

banryu79
17-03-2009, 08:13
Il processo esterno alla JVM che devi lanciare stampa qualcosa in output (alla consolle)?

In ogni caso prova a consultare questi thread, facile che il tuo problema sia analogo a questi (http://www.hwupgrade.it/forum/search.php?searchid=8812925).

Infine questo articolo (http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html) può essere di aiuto