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

Visual C++ Discussion :

rediriger printf flux de sortie


Sujet :

Visual C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 91
    Points : 27
    Points
    27
    Par défaut rediriger printf flux de sortie
    Bonjour,

    j ai recu un code, une dll qui fait des printf, elle est utilisee pour un test unitaire qui est une console application, donc on voit les traces.
    Maintenant je l utilise avec une application win32, et je ne veux pas de console dos, je voudrais afficher le flux de sortie dans un editbox win32.
    Y a t il un moyen de rediriger le flux quelque part et le flusher dans le editbox.
    Merci

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 91
    Points : 27
    Points
    27
    Par défaut
    Bon voila j ai trouver ca, qui marche bien, mais cela m oblige a creer un thread pour lire mes donner en temps reel(polling).
    Vous savez pas si il existe une callback pour me dire quand il y a des nouvelles donnees qui arrivent dans le stream, comme je pourrais enlever ce thread?
    Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    #include <windows.h>
     
    #include <stdio.h>
    #include <fcntl.h>
    #include <io.h>
    #include <iostream>
     
    #ifndef _USE_OLD_IOSTREAMS
    using namespace std;
    #endif
     
    #define READ_FD 0
    #define WRITE_FD 1
     
    #define CHECK(a) if ((a)!= 0) return -1;
     
    class StdOutRedirect
    {
    public:
            StdOutRedirect(int bufferSize);
            ~StdOutRedirect();
     
            int Start();
            int Stop();
            int GetBuffer(char *buffer, int size);
     
    private:
            int fdStdOutPipe[2];
            int fdStdOut;
    };
     
    StdOutRedirect::~StdOutRedirect()
    {
            _close(fdStdOut);
            _close(fdStdOutPipe[WRITE_FD]);
            _close(fdStdOutPipe[READ_FD]);
    }
    StdOutRedirect::StdOutRedirect(int bufferSize)
    {
            if (_pipe(fdStdOutPipe, bufferSize, O_TEXT)!=0)
            {
                    //treat error eventually
            }
    		int val = _fileno(stderr);
            fdStdOut = _dup(_fileno(stdout));
    }
     
    int StdOutRedirect::Start()
    {
            fflush( stdout );
            CHECK(_dup2(fdStdOutPipe[WRITE_FD], _fileno(stdout)));
            ios::sync_with_stdio();
            setvbuf( stdout, NULL, _IONBF, 0 ); // absolutely needed
            return 0;
    }
     
    int StdOutRedirect::Stop()
    {
            CHECK(_dup2(fdStdOut, _fileno(stdout)));
            ios::sync_with_stdio();
            return 0;
    }
     
    int StdOutRedirect::GetBuffer(char *buffer, int size)
    {
            int nOutRead = _read(fdStdOutPipe[READ_FD], buffer, size);
            buffer[nOutRead] = '\0';
            return nOutRead;
    }

Discussions similaires

  1. Rediriger le flux de sortie vers le néant
    Par oodini dans le forum C++
    Réponses: 14
    Dernier message: 07/10/2011, 18h51
  2. [MySQL] Flux de sortie : ob_start + header
    Par ToxiZz dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/12/2005, 23h56
  3. Awk - changer le flux de sortie
    Par Longrais dans le forum Linux
    Réponses: 1
    Dernier message: 16/08/2005, 17h11
  4. Rediriger un flux de données sous linux
    Par Nicaisse dans le forum POSIX
    Réponses: 7
    Dernier message: 01/07/2003, 16h04
  5. Rediriger le plux de sortie
    Par Groove dans le forum C
    Réponses: 5
    Dernier message: 17/04/2003, 17h16

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