Salve, devo usare exec per una chiamata di sistema. Quando da terminale do il comando, dopo mi chiede di inserire 3 caratteri da tastiera. E' possibile fare lo stesso con exec di java (ovviamente non passandoli come argomenti al comando)???
Grazie
Salve, devo usare exec per una chiamata di sistema. Quando da terminale do il comando, dopo mi chiede di inserire 3 caratteri da tastiera. E' possibile fare lo stesso con exec di java (ovviamente non passandoli come argomenti al comando)???
Grazie
ciao si funziona tutto esattamente come da riga di comando..
già che ci siamo ti giro una classe molto carina che gestisce molto bene gli exec esterni, leggendo anche eventuali stream di output o error
codice:import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; public class RunnableHelper { // FUNZIONE PER ESEGUIRE UN FILE .EXE O .BAT public int runFile(String pathfile){ int exitVal = 0; String errors = ""; try { Runtime rt = Runtime.getRuntime(); Process proc = rt.exec(pathfile); StreamGobbler errorGobbler = new StreamGobbler(proc.getErrorStream(), "ERROR"); StreamGobbler outputGobbler = new StreamGobbler(proc.getInputStream(), "OUTPUT"); errorGobbler.start(); outputGobbler.start(); exitVal = proc.waitFor(); errors = errors + "Process exitValue: " + exitVal; } catch (Throwable t){ // SCRITTURA LOG System.out.println("JAVA ERROR " + t.getMessage()); exitVal = -1; } return exitVal; } // CLASSE INTERNA PER LETTURA STREAM class StreamGobbler extends Thread { InputStream is; String type; StreamGobbler(InputStream is, String type) { this.is = is; this.type = type; } public void run() { try { InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String line=null; while ( (line = br.readLine()) != null) System.out.println(type + ">" + line); } catch (IOException ioe) { ioe.printStackTrace(); } } } }
odio chi parla di politica..
anzi vorrei fondare un partito contro tutto ciò
Ciao e grazie per la risposta. Purtroppo la classe può solo leggere dallo standard errore e output, ma non riesco a capire come passare una stringa allo standard input del comando "pathfile"
Se devi passare dei dati al programma, ovviamente, dovrai prelevare l'OutputStream del Process e scriverci dentro (in modo speculare a quanto fa la classe postata da morphy79, che prende l'InputStream e l'ErrorStream).
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
scusa non avevo letto bene avevo letto da riga di comando... cmq il principio è quello che ti ha detto lele... recuperi dal process il getOutputStream() e ci scrivi dentroOriginariamente inviato da tuxpeppe
Ciao e grazie per la risposta. Purtroppo la classe può solo leggere dallo standard errore e output, ma non riesco a capire come passare una stringa allo standard input del comando "pathfile"
odio chi parla di politica..
anzi vorrei fondare un partito contro tutto ciò