Recuperer le fleux d'entre d'une application

Fermé
ramon_85 Messages postés 22 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 12 mai 2009 - 12 mai 2009 à 12:02
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 12 mai 2009 à 12:56
Bonjour
je veut lancer une application externe en java mais quand l'application externe demande des entres j'arrive pas a les transmetre
voici un exemple
mon code en c
test.c
#include<stdion.h>
int main()
{
printf(" veuillie intriduire un nombre\n");
scanf("%d",&a);
printf(" le nomre introuduite = %d",a);

}
*****************************************************************************
mon code en java
class App
{
public static void main(String args[])
{

Runtime runtime = Runtime.getRuntime();
String[] args ={" test.exe"};
final Process process = runtime.exec(args);


try{
BufferedReader reader =newBufferedReader(newInputStreamReader(process.getInputStream()));
String line ="";
try{
while((line = reader.readLine()) !=null) {
System.out.println(line);
}
}finally{
reader.close();
}
}catch(IOException ioe) {
ioe.printStackTrace();
}

}
}

Aider moi SVP
A voir également:

1 réponse

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
12 mai 2009 à 12:56
Salut.
Il faut voir comment fonctionne entrée et sortie standard.
On peut voir ça comme des fichiers. Il y a stdout pour le fichier sortie et stdin pour le fichier entrée.
à chaque fois qu'un programme fait une impression, il écrit dans stdout. Le shell qui surveille ce fichier, écrit les nouveautés du fichier dans le console.
À l'inverse, les programmes surveilles le fichier stdin, et dès que quelque chose de nouveau y est écrit, ils le lisent (à la demande de l'utilisateur tout de même). C'est le shell qui écris dans ce fichier lorsque tu entre du texte dans le console.
Le souci, c'est qu'il me semble que l'on ne peux pas écrire directement dans stdin, seul le shell a le droit (à vérifier tout de même).
Il existe des solutions : les pipes ou les fichiers d'échange (ce qui reviens en gros au même) ou encore les socket.
voir les fonctions popen(), pipe(), socketpair().
Après, je ne connaît pas grand chose au java, mais il y a peut être une méthode
runtime.print() ou un truc dans le genre.
0