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

C++ Discussion :

Interception des outputs C/fortran depuis C++


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm� Avatar de Fortran90
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    83
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 83
    Par d�faut Interception des outputs C/fortran depuis C++
    Bonjour,

    Mon but est de bufferiser dans une variable tous les outputs, sur stderr ou stdin de routines appel�s dans une librairie qui utilise du C et du fortran.

    Voil� o� j'en suis apr�s qques moments pass� sur google.

    Si intercepter des outputs (par cout) en C++ est assez simple (utilisation des stringstream et consort), et que pour le C on pour se d�broutiller par setbuf/setvbuf, je ne trouve aucun moyen pour intercepter les outputs de program fortran ( la m�thode setbuf ne marche pas).

    Je cherche donc un moyen d'intercepter tous les outputs et les enregistrer dans un buffer qui marcherait pour C/fortran..

    Une id�e?

  2. #2
    Membre chevronn�
    Inscrit en
    D�cembre 2010
    Messages
    290
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2010
    Messages : 290
    Par d�faut
    Il est aussi possible de rediriger les sorties stderr et stdout de tout un programme vers un pipe et de lire ce pipe, tu en penses quoi ?

  3. #3
    R�dacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634

  4. #4
    Membre confirm� Avatar de Fortran90
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    83
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 83
    Par d�faut
    Malheureusement l'id�e de cr�er un processus fils pour intercepter les outputs ne me semble pas viable:

    1/ les routines utilis�es dont je veux intercepter l'output peuvent �tre multithread�s via OpenMP
    2/ je travaille de surcro�t dans un environnement MPI

    L'id�e de forker des processes (un par process MPI) risque de bloquer mes ressources et d'overloader la machine juste pour trapper des outputs....

    A moins que je comprenne pas qqchose.

  5. #5
    R�dacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par d�faut
    La cr�ation d'un child process c'est juste pour lancer un ex�cutable dont tu veux mapper les entr�es/sorties (stdin,err,out) sur des pipes ma�tris�es par ton processus de bufferisation. Ensuite, que cet ex�cutable distribue son calcul, grand bien lui fasse du moment que la gestion des I/O est correcte.

  6. #6
    Membre confirm� Avatar de Fortran90
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    83
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 83
    Par d�faut
    Si par exemple j'ai 4 coeurs sur ma machine...
    Je lance le programme sur 1 process.
    Je spawne un process pour trapper les outputs.
    Le process spawn� va utiliser des pragmas OpenMP ou autres, sur 4 threads.

    Si je compte bien �a fait 5 processes sur une machine de 4 coeurs. Et �a c'est pas bon. Il faut bien que le process p�re continue � vivre pour r�cup�rer les out de son fils via le pipe...

    On a donc un process en trop qui spin � 100% de consommation CPU, pour rien. Enfin si pour des outputs qui arriveront plus lentement...

Discussions similaires

  1. [D�butant] Intercepter des Erreurs depuis un DataGriview li�.
    Par boby15000 dans le forum VB.NET
    R�ponses: 0
    Dernier message: 20/03/2015, 14h00
  2. [WD16] Intercepter des Evenements Windows depuis une classe
    Par dahlback dans le forum WinDev
    R�ponses: 8
    Dernier message: 15/01/2013, 13h55
  3. Intercepter des Evenements Windows depuis une classe
    Par jimmypage dans le forum WinDev
    R�ponses: 4
    Dernier message: 13/07/2012, 17h01
  4. interception des output console
    Par r0d dans le forum C#
    R�ponses: 2
    Dernier message: 19/10/2011, 14h08
  5. Interception des commandes in et out
    Par KDD dans le forum x86 16-bits
    R�ponses: 13
    Dernier message: 18/12/2002, 16h55

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