Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    redirect input e output per un'applicazione

    Ho bisogno di lanciare un'applicazione linux da una classe java. Devo poter fornire dei parametri in input e devo ricevere l'output da questa stessa applicazione. Come si può redirigere l'input e l'output?

  2. #2
    Mi rispondo da solo

    codice:
    public static void main(String[] args) {
    		    try {
    		      String line;
    		      Process p = Runtime.getRuntime().exec
    		        ("/usr/bin/zenity");
    		      BufferedReader input =
    		        new BufferedReader
    		          (new InputStreamReader(p.getErrorStream()));
    		      while ((line = input.readLine()) != null) {
    		        System.out.println(line);
    		      }
    		      input.close();
    		    }
    		    catch (Exception err) {
    		      err.printStackTrace();
    		    }
    		  }

  3. #3
    C'è un poblema.

    Nel momento in cui lancio l'applicazione, io ho bisogno di conoscere il suo output (tramite redirezione).

    Con questa riga lancio l'applicazione
    codice:
    Process p = Runtime.getRuntime().exec("/usr/bin/zenity");
    e con questa redirigo l'output
    codice:
    BufferedReader input = new BufferedReader(new InputStreamReader(p.getErrorStream()));
    ma ormai l'output è stato gia prodotto dall'applicazione e quando leggo input non c'è più niente da leggere. C'è un modo per assegnare prima le redirezioni e poi avviare il processo? O sbaglio io?

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    L'output lo redirigi con
    codice:
    BufferedReader input = new BufferedReader(new InputStreamReader(p.getOutputStream()));

  5. #5
    ma l'outputStream non è relativo all'applicazione chiamante?

    La mia applicazione scrive nell'outputStream che a sua volta è lo STDIN dell'applicazione chiamata. O mi sbaglio?

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Si, scusa. Ero di fretta ieri sera e' ho invertito gli stream.
    codice:
    BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream()));
    PrintWriter writer = new PrintWriter(new OutputStreamWriter(p.getOutputStream()));
    Dal primo leggi i dati, nel secondo li inserisci se il tuo programma si aspetta dei dati in ingresso.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.