[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

éxécuter une commande linux depuis un programme java



bonjour, je tente d'éxécuter une commende linux depuis un programme java :
j'ai le code suivant :
Code:

import java.io.*;

public class Exec
{
  public static void main(String[] args)
  {
    int i;
    String cmd;

    cmd="";
    for(i=0;i<args.length;i++) cmd+=args[i]+" ";
    System.out.println(cmd);
    cmd+="\n";

    try
    {
      Process p=Runtime.getRuntime().exec("/bin/sh");
      OutputStream in=p.getOutputStream();
      in.write(cmd.getBytes());
      in.flush();
      InputStream out=new BufferedInputStream(p.getInputStream());
      byte[] b=new byte[1024];
      int    n=out.read(b);
      for(i=0;i<n;i++) System.out.print((char)b[i]);

    }
    catch(Exception ex) { }
  }
}


lorsque je fais dans la ligne de commande :
>java Exec ls : ca marche
>java Excev ls > output.txt : ca marche

par contre si dans le programme je modifie la ligne
Code:
cmd+="\n";

par
Code:
cmd+=" > output.txt\n";


et ke je fait
>java Exec ls
j'ai bien output.txt qui est créé avec le résultat de la comande mais le programme continue de tourner, je ne revient pas a la ligne de commande.
je suis obliger d'interrompre le processus avec CTRL+C
qqn aurait une idée la dessus ?


Reply to: