Ajouter un commentaire

fredericmazue

En effet ça ne peut pas marcher.
Tu es tombé dans tous les pièges possibles.
Remarque ce n'est pas de ta faute, avec ce qu'ils disent dans la Javadoc, tout le monde tombe dedans la première fois.
Quel dommage que tu n'ais pas lu Programmez! 82 ;)
Et tu ne m'as pas répondu, fais tu partie de nos lecteurs :?:

Bon lecteur ou pas, je vais t'aider :)

C'est bien trop long de tout expliquer.
Alors voici un bout de code

package programmez.fred.processesdemo;

import java.util.*;
import java.io.*;

class StdHandler extends Thread {
    InputStream is;
    String type;
    
    StdHandler(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 ligne=null;
            while ( (ligne = br.readLine()) != null)
                System.out.println(type + "> " + ligne);
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
    }
}

public class Demo4 {
    public static void main(String[] args) throws Throwable {
        if (args.length <= 0) {
            System.err.println("Donnez une commande a lancer");
            System.exit(-1);
        }
        System.out.printf("\nSortie de la commande %s: \n",
                Arrays.toString(args));
        Runtime runtime = Runtime.getRuntime();
        Process process = runtime.exec(args);
        
        StdHandler stderr = new
                StdHandler(process.getErrorStream(), "stderr");
        
        StdHandler stdout = new
                StdHandler(process.getInputStream(), "stdout");
        
        stderr.start();
        stdout.start();
        int status = process.waitFor();
        System.out.println("Valeur de retour du sous proc: " + status);
    }
}

Pour essayer tape:

java -cp . programmez.fred.processesdemo.Demo3 cmd /c dir c:\windows

ou pourquoi pas ;)
java -cp . programmez.fred.processesdemo.Demo3 cmd /c copy test.txt C:\dossier

:)

remarque bien le cmd /c
Mais ça je pense que tu l'as déjà compris.
Pour le reste regarde bien le code et tu comprendras aussi :)
Remarque bien aussi le process.waitFor();

Ah là là, 50 lignes de codes pour lancer un exécutable... y pas à dire c'est cool Java :twisted:

Au fait, n'essaie même pas de raccourcir le code, sinon ça va foirer quelque part. Le code ci-dessus est *minimum* pour une exécution sûre... sans blague. :lol:

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 BBBB   EEEE  L     FFFF  RRRR  
B B E L F R R
BBBB EEE L FFF RRRR
B B E L F R R
BBBB EEEE LLLL F R RR