IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

execute une commande shell en java


Sujet :

API standards et tierces Java

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 113
    Points : 65
    Points
    65
    Par défaut execute une commande shell en java
    j'ai fait la commande "rm titi" et ça bien suprime le fichier "titi". Or quand je fait "ls > titi" ça ne modifi pas le contenu de "titi"!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    try{
       Process proc=Runtime.getRuntime().exec("ls > titi");
       }catch(IOException e){
       }
    je ne sait pas c'est quoi le probleme.
    la commande march etres bien sur le shell.

  2. #2
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Les redirections posent problème ( j'en ai déjà fait les frais ).
    Essai en passant un tableau de strings plutot qu'une seule string d'un coup :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String [] tableau={"ls",">","titi"};
    Process proc=Runtime.getRuntime().exec(tableau);

  3. #3
    Membre confirmé Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Points : 510
    Points
    510
    Par défaut
    Ton expression ne marche pas, tout simplement parce que c'est une commande du shell. Or, runtime.exec ne lance pas un shell, mais seulement un exécutable.

  4. #4
    Membre habitué Avatar de White Rabbit
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 122
    Points : 148
    Points
    148
    Par défaut
    Citation Envoyé par spekal
    Ton expression ne marche pas, tout simplement parce que c'est une commande du shell. Or, runtime.exec ne lance pas un shell, mais seulement un exécutable.
    Pas du tout -> http://javaalmanac.com/egs/java.lang/Exec.html?l=new

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 113
    Points : 65
    Points
    65
    Par défaut ça ne marche pas:-(
    String [] tableau={"ls",">","titi"};
    Process proc=Runtime.getRuntime().exec(tableau);[/CODE]

    ne donne pas de resultat.

  6. #6
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 814
    Points : 7 642
    Points
    7 642
    Par défaut
    Gère toi-même la redirection alors, plutôt que de demander au système de le faire.

    Tu peux t'inspirer de la redirection des pipes, tu as un exemple dans ce post.

    Ca devrait donner quelque chose dans ce style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    try{
                Process proc=Runtime.getRuntime().exec("ls");
                InputStream in = proc.getInputStream();
    	    BufferedWriter out=new BufferedWriter(new FileWriter("titi.dat"));
     
    	    int c;
                while ((c = in.read()) != -1) {
                    out.write((char)c);
                }
     
    	    in.close();
    	    out.flush();
    	    out.close();
     
    } catch (Exception e) {
                e.printStackTrace();
    }

  7. #7
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 113
    Points : 65
    Points
    65
    Par défaut yap
    c'est ce que j'ai ete entrein de chercher. thanks for helping

  8. #8
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Il me semble que pour le tableau de String, il faut rajouter des espace à ">" et "titi.dat". A tester.
    Sinon pour une commande aussi basique que ça, le mieux est d'utiliser les classes du jdk plutot qu'un shell système :
    "ls" --> java.io.File.listFiles();
    "> titi.dat" --> méthode proposée par plegat.

    >plegat : on fait les "close" dans le bloc finally

  9. #9
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 814
    Points : 7 642
    Points
    7 642
    Par défaut
    Citation Envoyé par iohack
    >plegat : on fait les "close" dans le bloc finally
    C'est vrai, mais j'avais pas envie!

    freakfm, écoute iohack pour le bloc finally, ne fais pas comme moi. J'écris très sale quand j'écris vite!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. execution une commande shell sous un intarface java
    Par alihenda dans le forum NetBeans
    Réponses: 1
    Dernier message: 28/02/2014, 14h15
  2. iptable peut il executer une commande shell ?
    Par htristra dans le forum Sécurité
    Réponses: 2
    Dernier message: 02/01/2011, 14h18
  3. Réponses: 8
    Dernier message: 25/09/2008, 20h22
  4. executer une commande shell en c++
    Par robux dans le forum Linux
    Réponses: 4
    Dernier message: 25/09/2007, 18h01
  5. [C] code pour executer une commande shell
    Par waldoun dans le forum Linux
    Réponses: 3
    Dernier message: 05/05/2007, 22h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo