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

    [JAVA] Tempo di esecuzione programma esterno

    Ciao a tutti,

    in java lancio un programa esterno e vorrei sapere quanto tempo questo programma inpiega prima di concludere.
    Una cosa come questa non credo sia corretta:
    codice:
    double startTime=System.nanoTime();
    Process satProcess=Runtime.getRuntime().exec(cmd);
    double stopTime=System.nanoTime();
    Questo perche' penso che l'esecuzione del programma venga aperto in un thread diverso.

    Esiste un modo per sapere quanto tempo ha usato il programma cmd per concludere la sua esecuzione?

    Ciao,
    Mercuzio
    Quanti programmatori sono necessari per cambiare una lampadina?
    Nessuno, e' un problema hardware.

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Viene aperto in un processo diverso.

    Prova a chiamare waitFor() sul tuo Process.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Quote Originariamente inviata da Alex'87 Visualizza il messaggio
    Viene aperto in un processo diverso.

    Prova a chiamare waitFor() sul tuo Process.
    Grazie della risposta Alex! Purtroppo pero' penso che non sia la strada giusta.
    Infatti, AFAIK, usando la waitFor() aspetterei la conclusione del processo MA scrivendo una cosa cosi'
    codice:
    double startTime=System.nanoTime();
    
    Process satProcess=Runtime.getRuntime().exec(cmd);
    satProcess.waitFor();
    
    double stopTime=System.nanoTime();
    se il satProcess produce un output abbastanza grande da riempire il buffer, la waitFor() attende all'infinito che questo venga letto. Quindi dovrei mettere la waitFor dopo la lettura dell'output di satProcess ma questo mi andrebbe a sfasare le tempistiche...
    Quanti programmatori sono necessari per cambiare una lampadina?
    Nessuno, e' un problema hardware.

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    mm...
    Alllora prova a vedere se http://commons.apache.org/proper/commons-exec/ può esserti utile, forse c'è qualcosa sulle commons...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da Mercuzio Visualizza il messaggio
    se il satProcess produce un output abbastanza grande da riempire il buffer, la waitFor() attende all'infinito che questo venga letto.
    In generale, se il processo avviato scrive su standard-output e/o standard-error, allora tale output va letto da codice Java.
    Se leggi solo uno dei due in modo "sincrono" dopo la exec, la wait basta che sia dopo.
    Se devi leggere entrambi gli stream, o ne leggi uno sincrono e l'altro asincrono (in un thread) o entrambi asincroni.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.