ho un programma java che viene eseguito su macchina unix.
Questo programma java tra le altre cose, lancia uno script .sh che si occupa di effettuare la compressione di diversi files csv tramite il comando tar.
Il programma ha sempre funzionato.
Negli ultimi giorni è aumentato il numero di files csv da zippare (questo può influire sul metodo waitFor()?)
e da quel momento il programma si blocca nel momento in cui deve effettuare
il tar dei files csv (i relativi processi unix restano appesi).
Il programma non riprende l'esecuzione fin quando non killo a mano i processi unix relativi al tar.
Di seguito riporto il codice del metodo che lancia lo script:
codice:public void backupTAR() throws IOException { try{ String cmd = path_file_scarico+"creaTAR.sh"; Runtime runTime = Runtime.getRuntime(); Process process = runTime.exec(cmd); exitVal = process.waitFor(); System.out.println("ExitValue backupTAR: " + exitVal);//restituisce valore 9 }catch (Throwable t){ t.printStackTrace(); } }
Ho cercato all'interno del forum e ho provato a inserire il seguente blocco dopo il waitFor(), ma senza successo:
E' un problema di buffer?codice:InputStream is = process.getErrorStream(); InputStreamReader isr = new InputStreamReader (is); BufferedReader br = new BufferedReader (isr); String line; while ((line = br.readLine()) != null){ //MOMENTO IN CUI ATTENDE }
In che modo si può risolvere?
grazie per l'attenzione

Rispondi quotando


