Lancer des commandes Linux

dalud Messages postés 3 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 28 avril 2006 - 28 avril 2006 à 09:45
dalud Messages postés 3 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 28 avril 2006 - 28 avril 2006 à 19:02
Bonjour
Je bloque sur un petit problème de récupération des messages de sortie d'une commande linux. Ce morceau de code fonctionne avec la commande ls mais je voudrais utiliser mkisofs et la je ne recupère plus la sotie de la commande.
try {
Process p = null;
Runtime rt = Runtime.getRuntime();
p = rt.exec("ls -l");
java.io.BufferedReader br= new java.io.BufferedReader( new InputStreamReader(p.getInputStream()));
String s = null;
while ((s = br.readLine()) != null)
System.out.println(s);
}catch (Exception e) {}
Dans le cas de mkisofs, la commande s'éxecute bien puisque mon image est crée, mais je ne récupère aucun message et de plus je bloque l'appli java.
Je ne comprend pas vraiment pourquoi ca fonctionne avec des commandes et pas d'aurtres.
Est-ce que quelqu'un a une idée ??
Merci

8 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
28 avril 2006 à 11:46
Salut,


déja pour eviter de bloquage l'appli il est préférable de lire via un thread :P

ensuite essaye de lire stderr defois que tt le flux soit dessus (getErrorStream())

WORA
0
infojava Messages postés 35 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 30 mai 2006
28 avril 2006 à 11:48
Bonjour tout le monde

En realite je realise mon PFE qui consiste a realiser un editeur syntaxique pour un nouveau langage de programmation.

l interface est dejas faite elle contient une zone de texte ou l utilisateur ecrit son code source qui poura etre enregistrer dans un fichier, une barre de menu, et un toolbar .
mais j ai toujours un probleme
j ai un menu "run" qui contient deux MenuItem "compiler" et " executer "
que je n arrive pas a les rendre fonctionnels
pour le menu compiler j ai esseye :

<!-- BEGIN TEMPLATE: bbcode_code -->

Code :

if (e.getSource() == tool_compile) {
try {
String command = "% SystemRoot%\\system32\\cmd.exe"+" javac "+currFileName+".java";
Process child = Runtime.getRuntime().exec(command);}
catch (IOException ej) {
System.out.println("Impossible de compiler le fichier");
}
}

<!-- END TEMPLATE: bbcode_code -->
J ai toujours le message "Impossible de compiler le fichier" qui s affiche

Pou l exécution j ai aussi le même problème.

<!-- / message -->
0
infojava Messages postés 35 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 30 mai 2006
28 avril 2006 à 11:50
Bonjour tout le monde

En realite je realise mon PFE qui consiste a realiser un editeur syntaxique pour un nouveau langage de programmation.

l interface est dejas faite elle contient une zone de texte ou l utilisateur ecrit son code source qui poura etre enregistrer dans un fichier, une barre de menu, et un toolbar .
mais j ai toujours un probleme
j ai un menu "run" qui contient deux MenuItem "compiler" et " executer "
que je n arrive pas a les rendre fonctionnels
pour le menu compiler j ai esseye :

<!-- BEGIN TEMPLATE: bbcode_code -->

Code :

if (e.getSource() == tool_compile) {
try {
String command = "% SystemRoot%\\system32\\cmd.exe"+" javac "+currFileName+".java";
Process child = Runtime.getRuntime().exec(command);}
catch (IOException ej) {
System.out.println("Impossible de compiler le fichier");
}
}

<!-- END TEMPLATE: bbcode_code -->
J ai toujours le message "Impossible de compiler le fichier" qui s affiche

Pou l exécution j ai aussi le même problème.
Apres la compilation je doi recuperer le resultat de la compilation et le mettre dans un "JTextArea" !mais j ai pas une idée sur
comment le faire.!!!!!!!!!

<!-- / message -->
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
28 avril 2006 à 12:02
Salut,


tu n'es pas obligé de venir pourrire les postes des autres avec ton
problèmes creer un poste à toi et ptetre que quelqu'un voudra te
répondre

WORA
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
infojava Messages postés 35 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 30 mai 2006
28 avril 2006 à 12:46
comment je peut supprimer  mes mesages d'ici
0
dalud Messages postés 3 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 28 avril 2006
28 avril 2006 à 18:34
Salut
J'ais essayé getErrorStream() chez moi et ca marche, mais je ne pige pas vraiment pourquoi.
Je referai des test mardi au boulot.
merci du conseil
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
28 avril 2006 à 18:45
Ba c'est assez simple certaint developpeurs ecrivent les messages à afficher sur strerr et dautre sur stdout ou encore les 2


exemple de manipulation de stderr et stdout en java


int i = 0;

String str = "15z";

try{

    i = Integer.parseInt(s);

}catch(NumberFormatException e){

    System.err.println(str + " n'est pas un entier!");//ecriture dans stderr

}


System.out.println("une ecriture dans stdout");


pour une equivalence avec le C

getOutputStream() = stdin

getInputStream() = stdout

getErrorStream() = stderr

WORA
0
dalud Messages postés 3 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 28 avril 2006
28 avril 2006 à 19:02
Bon je pige, je test ca au boulot, en tout cas chez moi ca marche.
0
Rejoignez-nous