manel1989 | salut tout le monde!
j'ai 2 applications,une sur éclipse et l'autre sur VS2010C + +, je veux envoyer des paramètres à partir du code Java à l'autre par exemple un tableau ou des entiers ect.. Tous ce que je connais, c'est exécuter le code C + + à partir du code Java en utilisant la console. ce que je veux, c'est ceci: envoyer des paramters à partir du code Java via une methode (pas avec clavier)vers l'application c + +, après on exécute ce code ( dans mon cas appliquer une division) et enfin renvoyer le resultat de calcule à l'application java ,voici donc mon code java:
Code :
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.util.Scanner;
- class Program
- {
- private final Process proc;
- private final Thread out, err, in;
- public Program(String cmd, OutputStream pOut, OutputStream pErr, InputStream pIn) throws IOException
- {
- proc = Runtime.getRuntime().exec(cmd);
- out = new Transfert(proc.getInputStream(), pOut);
- err = new Transfert(proc.getErrorStream(), pErr);
- in = new Transfert(pIn, proc.getOutputStream());
- System.out.println("le output de lapplication ="+ out);
- System.out.println("le input de lapplication ="+ in);
- System.out.println("l'erreur de lapplication ="+ err);
- out.start();
- err.start();
- in.start();
- }
- public void kill()
- {
- out.interrupt();
- err.interrupt();
- in.interrupt();
- proc.destroy();
- }
- }
- class Transfert extends Thread
- {
- private final InputStream in;
- private final OutputStream out;
- public Transfert(InputStream in, OutputStream out)
- {
- this.in = in;
- this.out = out;
- }
- @Override
- public void run()
- {
- Scanner sc = new Scanner(in);
- try
- {
- while (sc.hasNextLine())
- {
- out.write((sc.nextLine() + System.lineSeparator()).getBytes());
- out.flush();
- if (isInterrupted())
- break;
- }
- }
- catch (IOException e)
- {
- System.err.println(e);
- }
- sc.close();
- }
- }
- public class Test
- {
- public static void main(String[] args) throws Exception
- {
- Program prog = new Program("C:\\Division.exe", System.out, System.err, System.in);
- // prog.kill();
- }
- }
|
et ici le code en c++ :
Code :
- #include <iostream>
- int main()
- {
- int a,b;
- std::cout << "a = ";
- std::cin >> a;
- std::cout << "b = ";
- std::cin >> b;
- if (b==0)
- std::cerr << "Division par zero interdite" << std::endl;
- else
- std::cout << "a/b = " << (a/b) << std::endl;
- return 0;
- }
|
Merci beaucoup pour vote aide ---------------
when there is a will there is a way
|