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
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
?
|