Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2551 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  pb avec Runtime.getRuntime().exec()

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

pb avec Runtime.getRuntime().exec()

n°656987
adon13
Posté le 26-02-2004 à 22:59:24  profilanswer
 

Bonjour a tous
je veux faire communiquer un programme java avec un programme c.
En premier lieu je veux juste lorsque je lance le programme en c recuperer les "printf" de celui ci dans mon prog en c ,Voila comment je fais le main a l'interieurde la classe du java:
public static void main(String args[]) {                          
 
 
String reception="";
   
                         
                        byte []tab_byte=new byte[1024];
                        int taille;
                         
                      try
   {
   Process proc = Runtime.getRuntime().exec("prog_c.exe" );
   
                         
                        InputStream out=proc.getInputStream();
                        nb=out.read(tab_byte);
                         
                       
   reception=new String(btab,0,nb);
                        System.out.println("le programme en c affiche :"+donnee_recu);
                         
                         
                         
   }
   catch(Exception ex) { }
  }
 
 
 
et voici le programme en c:
 
void main(void)
{
    printf("test" );
 
}
 
 
Lorsque j'execute le prog en java ,il me lance bien le programme en c,Seulement je ne recupère pas le "String" "test".
 
Pouvez vous sil vous plait m'aider ,savoir ce qu'il faut faire exactement ,merci d'avance

mood
Publicité
Posté le 26-02-2004 à 22:59:24  profilanswer
 

n°657010
xav14
Posté le 26-02-2004 à 23:21:29  profilanswer
 

c'est pas plutot proc.getOutputStream plutot ?

n°657028
adon13
Posté le 26-02-2004 à 23:34:15  profilanswer
 

xav14 a écrit :

c'est pas plutot proc.getOutputStream plutot ?


 
 
non ca c'est pour envoyer des données du java au prog c ,moi pour l'instant je veux l'inverse,donc je pense que c'est bien ca

n°657133
xav14
Posté le 27-02-2004 à 00:38:13  profilanswer
 

ben non justement
 
getOutputStream te renvoie la sortie standard de ton prog C

n°657135
adon13
Posté le 27-02-2004 à 00:39:47  profilanswer
 

Xav14 a écrit :

ben non justement
 
getOutputStream te renvoie la sortie standard de ton prog C


ok je v tester et je te dit ce que cela fait

n°657139
adon13
Posté le 27-02-2004 à 00:48:15  profilanswer
 

adon13 a écrit :


ok je v tester et je te dit ce que cela fait


 
ce que tu dis ne marche pas,en effet si je fais comme tu me dis a savoir:
 
 
OutputStream out =proc.getOutputStream();
taille=out.read(tableau_byte);
 
 
il y a une erreur de compilation sur out.read(tableau_byte) car on fait plutot out.write(..).
Les outputstream s'est fait pour envoyer du java au c.Donc je pense que tu as tort ,tu peux tester si tu veux

n°657290
xav14
Posté le 27-02-2004 à 10:42:24  profilanswer
 

bah je viens de l'essayer ton code et ça marche très bien :D
 

Code :
  1. import java.io.InputStream;
  2. public class adon13Process {
  3. public static void main(String args[]) {
  4.  String reception = "";
  5.  byte[] tab_byte = new byte[1024];
  6.  int taille;
  7.  try {
  8.   Process proc = Runtime.getRuntime().exec("prog_c.exe" );
  9.   InputStream out = proc.getInputStream();
  10.   int nb = out.read(tab_byte);
  11.   reception = new String(tab_byte, 0, nb);
  12.   System.out.println("le programme en c affiche :" + reception);
  13.  } catch (Exception ex) {
  14.  }
  15. }
  16. }


 

le programme en c affiche :test


Message édité par xav14 le 27-02-2004 à 10:42:57
n°658079
adon13
Posté le 27-02-2004 à 18:45:28  profilanswer
 

Xav14 a écrit :

bah je viens de l'essayer ton code et ça marche très bien :D
 

Code :
  1. import java.io.InputStream;
  2. public class adon13Process {
  3. public static void main(String args[]) {
  4.  String reception = "";
  5.  byte[] tab_byte = new byte[1024];
  6.  int taille;
  7.  try {
  8.   Process proc = Runtime.getRuntime().exec("prog_c.exe" );
  9.   InputStream out = proc.getInputStream();
  10.   int nb = out.read(tab_byte);
  11.   reception = new String(tab_byte, 0, nb);
  12.   System.out.println("le programme en c affiche :" + reception);
  13.  } catch (Exception ex) {
  14.  }
  15. }
  16. }


 

le programme en c affiche :test




 
lol je pense que tu mens car dans ce programme il y a quelques erreurs que g trouvé et maintenant ca marche ,pour le stream tu t'etais egalement trompé,je le confirme ,merci tout de meme pour ton aide ,a la prochaine

n°658299
xav14
Posté le 28-02-2004 à 04:25:21  profilanswer
 

adon13 a écrit :


 
lol je pense que tu mens car dans ce programme il y a quelques erreurs que g trouvé et maintenant ca marche ,pour le stream tu t'etais egalement trompé,je le confirme ,merci tout de meme pour ton aide ,a la prochaine


 
le code que j'ai copié est le code corrigé et il marche  :p

n°658528
adon13
Posté le 28-02-2004 à 14:49:24  profilanswer
 

xav14 a écrit :


 
le code que j'ai copié est le code corrigé et il marche  :p  


 
 
 
bon,moi dans ce programme l'erreur que g repêré est la suivante(ce n'est pas une erreur de compilation mais d'execution):
quand on ecrit ceci:
byte[] tab_byte = new byte[1024];  
 
et que la sortie standard du programme en c est "test"(donc 4 bytes)
et que par la suite on fait:
reception = new String(tab_byte, 0, nb);
ca ne peut pas marcher car ta_byte est un tableau de 1024 octets alors que la sortie standard elle comporte 4 octets,c'etait pour cette raison que cela ne marc<hais pas chez ,maintenant si ca marche chez toi ,c'est parfait mais cela me semble bizzare.
 
pour remedier a  ce probleme soit je faisais
cbyte[] tab_byte = new byte[4]; dans la declaration  
 
soit je bufferrise l'intputstream afin de traiter les messsages de la sortie standard du prog en c ligne a ligne.
Et dans le programme en c je met "\n" a chaque message:
exemple :printf("le programme marche a present\n" );
 
Voila ,a la prochaine mec!!!
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  pb avec Runtime.getRuntime().exec()

 

Sujets relatifs
[K.D.KOL] runtime class d'un Object et polymorphisme[PHP] PB avec safe_mode et shell_exec
[C] Probleme exec dans un fork :DVisual C++ difference entre mode debug et exec
[delphi6] runtime error[Help] Pb PHP exec( ) et java
Commande exec[c] question en vrac : Pragma // Marshal // Runtime
Batch pour suppression de fichiers erreur lors de l'exec :( [16/09][Acc97] Pb (pas facile!!) lors de l'exéc d'un MDE compilé...
Plus de sujets relatifs à : pb avec Runtime.getRuntime().exec()


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)