Newsgroup: it.comp.java
Titolo: si può fare?...

Salve a tutti,
 problema:
   tramite Runtime 'Runtime r = Runtime.getRuntime();',eseguo un prog 
Windows 'r.exec(backupPC);' dove la stringa "backupPC" esegue una 'xcopy' di 
varie directory.
 
 Ovviamente conosco il momento in cui inizia il r.exec(...); ma vorrei 
conoscere il momento in cui termina la 'xcopy' di Windows! (questo per 
segnalarlo all'utente).
 
 C'è modo per Java di conoscere quando un prog Windows termina?
 
Grazie. 
 
 

Dovresti documentarti un po' di piu' sulla classe Runtime e la "nuova" ProcessBuilder.
Ecco un punto di partenza:
http://tinyurl.com/2ufqzv
 
 
-- 
SoulSpirit

 ha scritto nel messaggio 
news:8340656.2890.1327679859483.JavaMail.geo-discussion-forums@yquu38...

Ok, grazie del suggerimento. Come si capisce sono assai nuovo a Java!
Ho provato questo e funziona:
 
  Runtime r = Runtime.getRuntime();
  Process p = r.exec("cmd /C xcopy C:\\sorg C:\\dest");
  try {
       p.waitFor();
  } catch (InterruptedException ie){;
  }
 
Non è proprio quello che volevo, perchè il waitFor() "congela" il programma 
finchè il processo avviato non si è concluso. Avevo pensato che si potesse 
avere una sorta di 'listener' (perdonate la semplificazione) che rivelasse 
la fine del processo...
Altra cosa, il metodo funziona benissimo se non si copiano directory 
"grandi". Applicandola su dir di alcune centinaia di megabyte, non si esce 
dal metodo anche quando la copia è finita (e questo non ho capito perché).
 
 

 dal metodo anche quando la copia è finita (e questo non ho capito perché).
 
Fatti stampare lo stack trace dell'eccezione, puo` darti informazioni utili
 
Enrico
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
 
iQIcBAEBAgAGBQJPJZPFAAoJEIgbS5QK93sQ0j0P/jYnlDg23cZDkem9u7Rwlr61
gOqpgrrJm18YAvHRtK4MtWNv1/Ll47cdHnQy9pqLZdQzEmoqy3K5iN5i5aQ87MIh
5UfqugldTeQJsuZ/Mp24Nw/8u92hRux5fjya/IKPj90g/PjYMhqLqioLPbeGjjtF
SVj+LW39mMEtiMpx6eazyr0lupt5ahfZmxVNlkOFzYeHJ4/D92uR5SIgGeuafB1G
soy99dBGV2MoO+7eCTsIkRxqA/nkVDlJRA+/7QaozIJlykOLug2w95fGyXSoMKMj
JKR+7gezYIs5eKoPxTHlKpUgB+Qo+csVNM2JwFhTX5TdjlyIprrvGU9d1NS2tBMy
JofCR5hfKpoSkw2J3bfgb5KApTrOCPIWQWWGhO95D6m8hdpHaj6ViR+czKZWeiG0
Th/ocNqZ24iZP6HkYZcz9edJRmdYw34PaJ7bpBUoVsaOlV7jljzTYJWiTc9bf1eo
ZCxI3J1QIO4Sl4uY2JiUIi/OFVb60hpsEXpfBL5ozsl1A7Na+5jgixr0sE3o+034
/7qVrxqFgVJ+Xn76Yv9Pb+1jEXTbxndmr9dBnkmTpER+QQ5i6CTMfhyIS5rUB3ZE
cHmW9dqVG4rObIXJmdScoiDbHFkrhEM4rBipGp5EcNU7oyiKGoui5LYVJq5tae3l
bq8+wyt/11Avj9xUV1UR
=o/EP
-----END PGP SIGNATURE-----
 

 esercizio per imparare a conoscere il linguaggio) :)
 
Lo so, lo so!... ;-)) Hai ragione, so che si possono copiare file e 
directory con Java (java.nio.file.Files, ecc)...
confesso che avevo fretta di completare il programma x mio nipote e anche un 
attacco di pigrizia!...
 
Ciao
 
 

 dal metodo anche quando la copia è finita (e questo non ho capito perché).
 
Certo, perche' eseguendo un comando esterno devi gestire i buffer di output e di error: se uno dei due si riempe l'esecuzione si interrompe in attesa che vengano svuotati.
Devi creare dei thread che li gestiscano correttamente. Nell'articolo che ti ho linkato ne parla nel penultimo paragrafo.
 
-- 
SoulSpirit

 attacco di pigrizia!...
 
http://docs.oracle.com/javase/tutorial/essential/io/examples/Copy.java
 
 

 ha scritto nel messaggio 
news:21426701.1150.1327916309356.JavaMail.geo-discussion-forums@vbcj7...


mooolto interessante...
...e molto complesso (per me!)
capito che mi aspetta uno studio intenso!...
 
 
"coder" <c...@nomail.not> ha scritto nel messaggio 
news:jg60bc$9rm$1...@speranza.aioe.org...
