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

    [Java] Sospendere l'esecuzione di una applicazione finchè non è terminato un comando

    Dunque, nel mio programma ho questa parte di codice:

    codice:
    public static void Esegui(String command){
    Runtime r = Runtime.getRuntime();
    	try{
    		Process pr = Runtime.getRuntime().exec(command);
    		System.out.println("In elaborazione");
    	}catch(Exception e){
    		e.printStackTrace();
    	}
    }
    questa funzione esegue dei comandi da dos.

    Ora ho la necessità di sospendere l'esecuzione dell'applicativo java finchè il comando non ha terminato la sua elaborazione. Come devo fare?

    Ho provato ad inserire pr.waitFor() ma non credo sia l'istruzione giusta, ho consultato la java doc ma non sono riuscito ad individuare l'istruzione adeguata.

    Come devo fare? sapete aiutarmi?
    Luca >> http://www.pollosky.it

  2. #2
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Se il tuo obiettivo e' quello di attendere che il comando "command" venga eseguito penso tu debba proprio effettuare, come hai detto, una pr.waitFor()

  3. #3
    ho provato ad inserire quella istruzione ma il programma va in sospensione e non riparte più...non c'è un modo per controllare lo stato di esecuzione del comando e far ripartire l'applicativo appena terminato?
    Luca >> http://www.pollosky.it

  4. #4
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Originariamente inviato da LukeSky
    ho provato ad inserire quella istruzione ma il programma va in sospensione e non riparte più...non c'è un modo per controllare lo stato di esecuzione del comando e far ripartire l'applicativo appena terminato?
    Innanzitutto prova a passargli un comando che termina subito (Ad esempio dir o ls) e vedi che succede.
    codice:
    public static void Esegui(String command){
    Runtime r = Runtime.getRuntime();
    	try{
    		Process pr = Runtime.getRuntime().exec(command);
                    pr.waitFor();
    		System.out.println("Comando eseguito");
    	}catch(Exception e){
    		e.printStackTrace();
    	}
    }
    Dovrebbe comparire su STDOUT il msg "comando eseguito"

  5. #5
    Allora, ho fatto un pò di prove e la cosa sta diventando sempre più strana. A quanto pare il comportamento della funzione cambia a seconda dei comandi che gli passo.

    Se come comando in input gli passo "calc" tutto funziona regolarmente: viene avviata la calcolatrice di windows ed appena la chiudo viene stampato nella finestra dos il messaggio "comado eseguito".

    Se però eseguo il comando "dir" ho questo errore:

    codice:
    java.io.IOException: Cannot run program "dir": CreateProcess error=2, Impossibil
    e trovare il file specificato
            at java.lang.ProcessBuilder.start(ProcessBuilder.java:459)
            at java.lang.Runtime.exec(Runtime.java:593)
            at java.lang.Runtime.exec(Runtime.java:431)
            at java.lang.Runtime.exec(Runtime.java:328)
            at Elabora.Esegui(Elabora.java:24)
            at Elabora.<init>(Elabora.java:16)
            at Elabora.main(Elabora.java:67)
    Caused by: java.io.IOException: CreateProcess error=2, Impossibile trovare il fi
    le specificato
            at java.lang.ProcessImpl.create(Native Method)
            at java.lang.ProcessImpl.<init>(ProcessImpl.java:81)
            at java.lang.ProcessImpl.start(ProcessImpl.java:30)
            at java.lang.ProcessBuilder.start(ProcessBuilder.java:452)
            ... 6 more
    infine se passo come comando "help" il programma si sospende e non si sblocca più (in pratica il messaggio "comando eseguito" non viene mai visualizzato).

    Non riesco proprio a capire da cosa possa dipendere...sapete aiutarmi?
    Luca >> http://www.pollosky.it

  6. #6
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Originariamente inviato da LukeSky
    Allora, ho fatto un pò di prove e la cosa sta diventando sempre più strana. A quanto pare il comportamento della funzione cambia a seconda dei comandi che gli passo.

    Se come comando in input gli passo "calc" tutto funziona regolarmente: viene avviata la calcolatrice di windows ed appena la chiudo viene stampato nella finestra dos il messaggio "comado eseguito".

    Se però eseguo il comando "dir" ho questo errore:

    codice:
    java.io.IOException: Cannot run program "dir": CreateProcess error=2, Impossibil
    e trovare il file specificato
            at java.lang.ProcessBuilder.start(ProcessBuilder.java:459)
            at java.lang.Runtime.exec(Runtime.java:593)
            at java.lang.Runtime.exec(Runtime.java:431)
            at java.lang.Runtime.exec(Runtime.java:328)
            at Elabora.Esegui(Elabora.java:24)
            at Elabora.<init>(Elabora.java:16)
            at Elabora.main(Elabora.java:67)
    Caused by: java.io.IOException: CreateProcess error=2, Impossibile trovare il fi
    le specificato
            at java.lang.ProcessImpl.create(Native Method)
            at java.lang.ProcessImpl.<init>(ProcessImpl.java:81)
            at java.lang.ProcessImpl.start(ProcessImpl.java:30)
            at java.lang.ProcessBuilder.start(ProcessBuilder.java:452)
            ... 6 more
    infine se passo come comando "help" il programma si sospende e non si sblocca più (in pratica il messaggio "comando eseguito" non viene mai visualizzato).

    Non riesco proprio a capire da cosa possa dipendere...sapete aiutarmi?
    Il comando "dir" non e' eseguibile neppure tramite il "run" di windows ma "solo" dopo aver aperto una shell digitando "cmd".
    Per certi comandi occorre probabilmente settare alcune variabili di ambiente (Directory di lavoro, etc.)
    Se provi a lanciare il comando "explorer", ad esempio, vedrai che non hai problemi.

  7. #7
    mmm ok, ma come mai con il comando help si blocca tutto? quale soluzione posso adottare?
    Luca >> http://www.pollosky.it

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,333

    Moderazione

    Ho spostato la discussione nel forum dedicato a Java.
    In futuro, poni qui le tue domande relative a questo linguaggio.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da LukeSky
    mmm ok, ma come mai con il comando help si blocca tutto? quale soluzione posso adottare?
    Leggere questa discussione.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

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.