|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2005
Messaggi: 340
|
[Java] Runtime
Con la classe Runtime è possibile eseguire un processo non in background?
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
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.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2005
Messaggi: 340
|
Intedo che se faccio parire un BAT voglio che si avvia visuale e non in background.
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
rt.exec (new String[] { "cmd", "/C", "start", "cmd", "/C", "prova.bat" });
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#5 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
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.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#7 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
ah vabbè, ho capito: è per aprire un'altra console
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: May 2005
Messaggi: 340
|
Non va
Cioè si apre una finestra nera e subito scompare. |
|
|
|
|
|
#9 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
prova ad usare l'opzione /K anziché /C nel secondo cmd
|
|
|
|
|
|
#10 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
cioè così:
Codice:
rt.exec (new String[] { "cmd", "/C", "start", "cmd", "/K", "prova.bat" });
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:39.




















