pb avec Runtime.getRuntime().exec() - Java - Programmation
Marsh Posté le 26-02-2004 à 23:34:15
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
Marsh Posté le 27-02-2004 à 00:38:13
ben non justement
getOutputStream te renvoie la sortie standard de ton prog C
Marsh Posté le 27-02-2004 à 00:39:47
Xav14 a écrit : ben non justement |
ok je v tester et je te dit ce que cela fait
Marsh Posté le 27-02-2004 à 00:48:15
adon13 a écrit : |
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
Marsh Posté le 27-02-2004 à 10:42:24
bah je viens de l'essayer ton code et ça marche très bien
Code :
|
le programme en c affiche :test |
Marsh Posté le 27-02-2004 à 18:45:28
Xav14 a écrit : bah je viens de l'essayer ton code et ça marche très bien
|
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
Marsh Posté le 28-02-2004 à 04:25:21
adon13 a écrit : |
le code que j'ai copié est le code corrigé et il marche
Marsh Posté le 28-02-2004 à 14:49:24
xav14 a écrit : |
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 rintf("le programme marche a present\n" );
Voila ,a la prochaine mec!!!
Marsh Posté le 26-02-2004 à 22:59:24
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