Torna indietro   Hardware Upgrade Forum > Software > Programmazione

MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
Wireless 2.4 GHz, Bluetooth 5.4, cancellazione attiva del rumore, design pieghevole e un'autonomia che mette in imbarazzo prodotti che costano il doppio. Le Maestro 500 non eccellono in nulla, ma offrono tutto. E a questo prezzo è difficile chiedere di più
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
Dopo anni di attesa e una lunga fase di sviluppo, Noctua entra nel mercato dei dissipatori a liquido AIO con la nuova serie NL-LC1. Forte dell'esperienza maturata nel raffreddamento ad aria, l'azienda austriaca promette di portare la propria filosofia fatta di qualità costruttiva, attenzione ai dettagli e silenziosità anche in questo segmento. Abbiamo provato il nuovo sistema per scoprire se riesce a distinguersi in un mercato ormai molto competitivo.
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super
Arrivato sul mercato italiano a fine marzo, la serie Boox Go 10.3 (Gen II) offre Android 15, penna da 4096 livelli e retroilluminazione opzionale (nel modello da noi provato, Lumi, presente). La serie si compone di due tablet ePaper che fanno da e-reader, blocco note digitale e persino browser, tutto a un prezzo che fa dimenticare i prodotti di brand più blasonati
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 11-10-2007, 16:22   #1
alfonso534791
Junior Member
 
Iscritto dal: Oct 2007
Messaggi: 6
[Java] exec()

Salve a tutti,
ho un grosso problema con java, non riesco ad eseguire un programma esterno con la funzione exec(). posto il codice:

public void training() throws IOException{
Process p=Runtime.getRuntime().exec("./RPCL/ulearn");
}

molto semplice. Questa funzione viene richiamata da altro pezzo di codice che credo sia inutile trascrivere. il punto è che il file ulearn nella cartella RPCL viene visto dal metodo in quanto non genera errore. Solo che è come se non fosse partito. Infatti l'esecuzione del programma, da shell, deve generare un file di testo, che invece non genera. Se lo facio a mano, da shell digito ./RPCL/ulearn funziona e crea il file.
Qualcuno sà aiutarmi,
Grazie mille
alfonso534791 è offline   Rispondi citando il messaggio o parte di esso
Old 11-10-2007, 16:28   #2
isAlreadyInUse
Senior Member
 
L'Avatar di isAlreadyInUse
 
Iscritto dal: Sep 2007
Messaggi: 754
Che tipo di file è ulearn?
__________________
http://www.tevigroup.it/
isAlreadyInUse è offline   Rispondi citando il messaggio o parte di esso
Old 11-10-2007, 20:59   #3
alfonso534791
Junior Member
 
Iscritto dal: Oct 2007
Messaggi: 6
è un file eseguibile ottenuto dalla compilazione del file ulearn.c , ho dimenticato di precisare che tutto ciò lo faccio su Linux Debian 2.6.21, e che il programma all'inizio funzionava, fino a quando un bel giorno(Lunedì) ha smesso per motivi che ignoro!!!
alfonso534791 è offline   Rispondi citando il messaggio o parte di esso
Old 11-10-2007, 22:06   #4
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
devi semplicemente gestire l'output così ad occhio..
Se provi ad eseguire un file e questo file scrive qualcosa sulla stdout e non redirezoni l'output con il metodo exec si incasina tutto e il programma si inceppa.
Una soluzione completa la trovi con google (a quest'ora non mi va di goglare ), ma ad occhio se esegui "ulearn > output.out" potrebbe andare.
Se non va domani vedo di trovarti la procedura per gestire input e output da exec
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2007, 15:58   #5
alfonso534791
Junior Member
 
Iscritto dal: Oct 2007
Messaggi: 6
non và, cmq volevo precisare anche che il programma ha un file di configurazione che deve leggere, non è che con exec() bisogna occuparsi anche degli input oltre che degli output?
alfonso534791 è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2007, 18:45   #6
ally
Bannato
 
L'Avatar di ally
 
Iscritto dal: Jan 2003
Città:
Messaggi: 4423
...un idea per controllare l'output e l'input...

Codice:
 try {
        	proc = Runtime.getRuntime().exec(iltuoprocesso);
            input = new BufferedReader(newInputStreamReader(proc.getInputStream()));
            output = proc.getOutputStream();
            new Thread(){
                public void run(){
                    String line;
                    try {
                    	while((line = input.readLine()) != null){
                                System.out.println(line);
    			        }	
                    } catch(Exception e) {
                    	 System.out.println(e);
                    }
                }
                
            }.start();
            
        } catch (IOException e) {
        	e.printStackTrace();
        }
...invio di codice al processo slave...

Codice:
private void SendCommand(String cmd){
        try {
            if(proc != null){
               output.write(cmd.getBytes());
               output.flush();
            }
        }catch(IOException e) {
        	System.out.println(e);
        }
    }
...ma potresti anche provare con un semplice...

Codice:
Process child = Runtime.getRuntime().exec(ilmioporcesso);
			child.waitFor();
...ciao...
ally è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2007, 13:56   #7
alfonso534791
Junior Member
 
Iscritto dal: Oct 2007
Messaggi: 6
non và,
per provare a fare un debugging ho usato

int p=Runtime.getRuntime().exec("./ulearn").exitValue();

per vedere se l'esecuzione và a buon fine. ebbene genera la seguente eccezzione

va.lang.IllegalThreadStateException

cosa può essere?
alfonso534791 è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2007, 13:59   #8
ally
Bannato
 
L'Avatar di ally
 
Iscritto dal: Jan 2003
Città:
Messaggi: 4423
Quote:
Originariamente inviato da alfonso534791 Guarda i messaggi
non và,
per provare a fare un debugging ho usato

int p=Runtime.getRuntime().exec("./ulearn").exitValue();

per vedere se l'esecuzione và a buon fine. ebbene genera la seguente eccezzione

va.lang.IllegalThreadStateException

cosa può essere?
...indica che il processo non è ancora terminato...in caso di termine avvenuto dovrebbe restituire 0 se non sbaglio...

...ciao...
ally è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2007, 14:02   #9
ally
Bannato
 
L'Avatar di ally
 
Iscritto dal: Jan 2003
Città:
Messaggi: 4423
...mh...non potrebbe essere un problema di locazione?...

Codice:
public void launchCommand(){
		
		try{
			File dir = new File (".");
			String file = dir.getCanonicalPath();
			System.out.println(file);
			Process child = Runtime.getRuntime().exec("./go.sh");
			child.waitFor();
		}catch (Exception e){
			System.out.println(e);
		}
	}
...cosa scrive a console?...

...ciao...
ally è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2007, 16:58   #10
alfonso534791
Junior Member
 
Iscritto dal: Oct 2007
Messaggi: 6
il path è guisto,
non sò proprio cosa possa essere a non farlo funzionare!!!
alfonso534791 è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2007, 19:42   #11
ally
Bannato
 
L'Avatar di ally
 
Iscritto dal: Jan 2003
Città:
Messaggi: 4423
Quote:
Originariamente inviato da alfonso534791 Guarda i messaggi
il path è guisto,
non sò proprio cosa possa essere a non farlo funzionare!!!
...mh...prova a iniziare il tuo script con uno spostamento alla directory di residenza del comando...è possibile che l'exec non parta dalla directory da cui è lanciato il programma java...

Codice:
#!/bin/sh
cd $JAVA_HOME/lib/ext
./ulearn
...ciao...
ally è offline   Rispondi citando il messaggio o parte di esso
Old 24-10-2007, 11:35   #12
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da alfonso534791 Guarda i messaggi
Salve a tutti,
ho un grosso problema con java, non riesco ad eseguire un programma esterno con la funzione exec(). posto il codice:

public void training() throws IOException{
Process p=Runtime.getRuntime().exec("./RPCL/ulearn");
}

molto semplice. Questa funzione viene richiamata da altro pezzo di codice che credo sia inutile trascrivere. il punto è che il file ulearn nella cartella RPCL viene visto dal metodo in quanto non genera errore. Solo che è come se non fosse partito. Infatti l'esecuzione del programma, da shell, deve generare un file di testo, che invece non genera. Se lo facio a mano, da shell digito ./RPCL/ulearn funziona e crea il file.
Qualcuno sà aiutarmi,
Grazie mille
Guarda qui -> ExecHelper
banryu79 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro MSI Maestro 500 Wireless: ANC e 90 ore di autono...
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine NL-LC1 è il primo dissipatore a liquido A...
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con ...
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming Gigabyte MO32U24 OLED: il 4K a 240Hz su un panne...
Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh Recensione realme 16 5G: lo smartphone con Selfi...
Gwynne Shotwell (presidente di SpaceX): ...
ISRO lancerà il primo modulo della stazi...
Lo sfondo animato del tuo PC potrebbe es...
Dopo la RAM, Framework annuncia l'aument...
Google Home Speaker ufficiale: è il prim...
Spotify: i nomi utente stanno per divent...
Il limite vero dei data center AI sono g...
AMD conferma i nuovi Threadripper: Zen 6...
Stop all'ADSL per WindTre: continua la m...
HPE punta sull'IA agentica e dichiara gu...
macOS avvisa quando si incolla un comand...
Everpure ridisegna lo storage per l’IA: ...
NVIDIA RTX Remix 1.5: realizzare remaste...
Come configurare Windows 11 like a pro, ...
Windows 11 cambia finalmente la gestione...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 22:03.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v