View Full Version : [Java] Runtime
Con la classe Runtime è possibile eseguire un processo non in background?
Con la classe Runtime è possibile eseguire un processo non in background?Se per "non in background" intendi dire che vuoi attendere esplicitamente la fine del processo avviato, sì, si può fare ma non c'entra Runtime. I metodi exec() ritornano un Process e quest'ultima classe ha il metodo waitFor() che sospende il thread corrente finché il processo lanciato ha terminato la sua esecuzione.
Intedo che se faccio parire un BAT voglio che si avvia visuale e non in background.
:help:
Intedo che se faccio parire un BAT voglio che si avvia visuale e non in background.
:help:Cioè che abbia la console?
rt.exec (new String[] { "cmd", "/C", "start", "cmd", "/C", "prova.bat" });
Cioè che abbia la console?
rt.exec (new String[] { "cmd", "/C", "start", "cmd", "/C", "prova.bat" }); come mai hai usato start e due cmd anziché un solo cmd? :wtf:
come mai hai usato start e due cmd anziché un solo cmd? :wtf:Il motivo è abbastanza semplice.
Facciamo una premessa: se avessi usato semplicemente:
rt.exec (new String[] { "cmd", "/C", "prova.bat" });
avrei certamente eseguito il batch prova.bat ma il tutto si sarebbe svolto nel contesto del processo (una istanza di 'cmd.exe') avviato direttamente da Java. In questo modo però avrei dovuto usare e gestire gli stream di input/output del processo, per intenderci, quelli forniti dalla classe Process (getOutputStream(), ecc...).
Invece facendo come ho detto nel post precedente, avvio ancora una istanza di cmd.exe ma non mi frega niente dei suoi standard input/output in quanto uso il comando interno start per eseguire una nuova istanza di cmd.exe in cui interpretare il batch. In questo modo si ha il risultato di avere sempre una console nuova di "zecca" per eseguire il batch. Sia che la applicazione Java abbia o non abbia una sua console.
ah vabbè, ho capito: è per aprire un'altra console :p
Non va :(
Cioè si apre una finestra nera e subito scompare.
prova ad usare l'opzione /K anziché /C nel secondo cmd
cioè così:
rt.exec (new String[] { "cmd", "/C", "start", "cmd", "/K", "prova.bat" });
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.