IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Partager des données avec un executable


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 136
    Par défaut Partager des données avec un executable
    Salut à tous,

    Je sais que le fait de commander un exécutable est un sujet qui revient souvent ici

    Mais moi j'aurais besoin de communiquer des informations entre l'exécutable et la partie Java (qui serait essentiellement l'interface graphique alors que l'exéc serait du code de calcul scientifique en C++).

    Je suppose qu'il n'existe pas de meilleur moyen que d'écrire un fichier sur le HD qui sera alors lu par le code Java. J'imagine qu'il n'est pas possible de lancer un thread qui partage de la mémoire avec un code exécutable, histoire d'éviter les lenteurs des IO sur le HD.

    Merci de confirmer/infirmer mes doutes !

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 136
    Par défaut
    Entre-temps, j'ai trouvé la doc

    http://ydisanto.developpez.com/tutor...e/runtime/#LIV

    qui explique qu'on peut communiquer avec des flux avec les exec.

    la méthode destroy() qui permet de tuer le processus de l'application externe,
    la méthode exitValue() qui permet de récupérer la valeur de retour du processus de l'application externe,
    la méthode getErrorStream() qui permet de récupérer le flux d'erreur du processus de l'application externe,
    la méthode getInputStream() qui permet de récupérer le flux de sortie du processus de l'application externe,
    la méthode getOutputStream() qui permet de récupérer le flux d'entrée du processus de l'application externe,
    la méthode waitFor() qui met le thread courant en attente que le processus de l'application externe se termine.
    Le problème, c'est que je ne vois pas bien comment Java saurait "quel" stream récupérer. Genre, dans mon code en C++, je pourais avoir plein de ostream en même temps, je ne vois pas bien comment Java ferait pour savoir lequel me renvoyer avec getOutputStream()

    Voilà voilà, dsl mais je débute en threads...

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    Tu peux lire ceci

    "Le" iostream de ton processus C++, récupéré en java, c'est la sortie standard.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 136
    Par défaut
    c'est la sortie standard
    ... Tu veux dire cin >> et cout << ??

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    ... Tu veux dire cin >> et cout << ??
    Oui

    C'est ce qui est marqué dans la javadoc
    Citation Envoyé par javadoc Process
    The created subprocess does not have its own terminal or console. All its standard io (i.e. stdin, stdout, stderr) operations will be redirected to the parent process through three streams (getOutputStream(), getInputStream(), getErrorStream()).

  6. #6
    Membre expérimenté
    Inscrit en
    Mai 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 335
    Par défaut
    Sinon, il y a aussi:
    - Corba: un peu lourd à implémenter, mais permet l'apple d'objet à distance, avec passage de paramètres
    - le JNI: pour appeler directement le code C++ en Java snas passer par programme.

    Si Corba est trop compliqué à mettre en place, tu peut simplement ouvrir une Socket entre le Java et le C++ et établir ton propre protocole de communication.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 136
    Par défaut
    Ok, et j'imagine qu'on peut transmettre des données binaires ainsi ? Histoire d'éviter des erreurs d'arrondi pour transférer des données numériques...

Discussions similaires

  1. Réponses: 5
    Dernier message: 27/04/2015, 15h32
  2. VmWare sous XP: partager des données avec Linux
    Par EvilAngel dans le forum VMware
    Réponses: 18
    Dernier message: 06/01/2009, 13h03
  3. [format des données avec une procédure stockée]
    Par viny dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 10/03/2005, 13h24
  4. Exporter seulement une partie des données avec pg_dump ?
    Par Philhz dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 31/07/2004, 09h50
  5. Réponses: 13
    Dernier message: 20/03/2003, 08h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo