Question java + C

cs_nounouX Messages postés 34 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 21 mars 2006 - 11 juin 2004 à 13:13
lafoune2 Messages postés 26 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 22 juillet 2004 - 11 juin 2004 à 16:22
Voila j'aimerai apprendre a faire interagir le langage C et Java, pour le moment j'ai fait un tout petit programme C qui boucle 4 fois, et a chaque boucle affiche : "ok ça marche !!!" toutes les 10 secondes...

test.c :
---------
#include <stdio.h>
#include <stdlib.h>

int main(int ac, char **av){
int i;
i = 0;
for(i = 0; i < 5; i++){
printf("OK c bon ça marche !!!\n");
sleep(10);
}
exit(0);
}

ensuite j'ai fait un programme Java qui execute ce programme test et affiche ce que "test" envoie sur la sortie standard (cad "ok ça marche")

Test.java
------------
import java.io.*;

public class Test {
public static void main (String[]args) {
try{
Runtime r = Runtime.getRuntime();
Process process = Runtime.getRuntime().exec("./test");
InputStreamReader in= new InputStreamReader(process.getInputStream());
BufferedReader monbuffer = new BufferedReader(in);
OutputStream out = process.getOutputStream();
while(true){
String s = monbuffer.readLine();
if(s!=null) System.out.println(s);
}
} catch(Exception e) {
System.out.println("Erreur "+e);
}
}
}

mais voila le probleme : le programme java n'affiche pas en "temps reel" les printf du langage C, il affiche les 4 "ok ça marhce !!!" lorsque le langage C ce termine...

s'il vous plait qu'elle modification je dois apporter a mon programme java pour qu il affiche les "ok ça marche !!!" en "temps reel"

1 réponse

lafoune2 Messages postés 26 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 22 juillet 2004
11 juin 2004 à 16:22
je suis pas trop un specialiste mais je pense qu'a l'appel de la ligne :

Process process = Runtime.getRuntime().exec("./test");

ton prog Java attends la fin de l'execution de test

il faudrait donc qu'avant d'exectuer test, tu lance un thread qui effectue l'ecoute et l'ecriture du resultat

mais comme dit je ne suis pas un spécialiste...
0
Rejoignez-nous