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 :

flux stdin/stdout [2 questions]


Sujet :

C

  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2003
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 222
    Par défaut flux stdin/stdout [2 questions]
    Bonjour,
    je manipule (détourne) le flux d'entrée et de sortie, respectivement stdin et stdout grace aux fonctions freopen

    Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    freopen(tfile, "rt", stdin) //ouverture en lecture du flux stdin
    Comme je le presise dans mon sujet, j'ai deux questions (problèmes) auquels je suis confronté et jusqu'à présent je n'ai pas trouvé de solutions...

    Premièrement, j'attends le flux d'entrée via cette boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    while ( c = (char) getc(stdin) ) < 0
    {}
    On sort donc quand y a un caractère "valide"
    Le truc c'est qu'une telle boucle prends trop de temps processeur !
    Comment puis je la rendre plus économique (Un sleep à l'intérieur)

    Ensuite lorsque je ne veux plus detourner le stdin/stdout je fais un fclose sur mon descripteur.
    Mais impossible de récuperer la main. Le flux est bloqué...
    Comment puis je recuperer la main sur le flux ?

    Voilà ce sont mes 2 questions problèmes où je n'ai pas de solutions...

    Merci d'avance si vous pouvez m'aider...

  2. #2
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut Re: flux stdin/stdout [2 questions]
    Citation Envoyé par MonsieurAk
    Comment puis je la rendre plus économique (Un sleep à l'intérieur)
    Tu pourrais utiliser la fonction select avec un timer...

    Citation Envoyé par MonsieurAk
    Ensuite lorsque je ne veux plus detourner le stdin/stdout je fais un fclose sur mon descripteur.
    Mais impossible de récuperer la main. Le flux est bloqué...
    Comment puis je recuperer la main sur le flux ?
    Il n'y a (à ma connaissance) aucune bonne solution pour récupérer le flux après un freopen, tu pourrais utiliser close/dup je pense...

    Jc

  3. #3
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut Re: flux stdin/stdout [2 questions]
    Bonjour,
    Citation Envoyé par fearyourself
    Il n'y a (à ma connaissance) aucune bonne solution pour récupérer le flux après un freopen, tu pourrais utiliser close/dup je pense...
    Rien de portable mais sous Linux, il suffit de réouvrir le fichier correspondant (/dev/stdin ou /dev/stdout par exemple).

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2003
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 222
    Par défaut
    Je ne peux pas utiliser le select car sous Windows ca ne marche pas (à ma connaissance)

    Merci en tout cas pour vos infos.
    A présent je sais qu'un flux détournée n'est plus recupérable.

Discussions similaires

  1. pipe stdin stdout
    Par onaipadesmickey dans le forum Linux
    Réponses: 1
    Dernier message: 22/08/2007, 16h20
  2. Redirection stdin / stdout
    Par Neitsa dans le forum Linux
    Réponses: 3
    Dernier message: 17/02/2007, 15h57
  3. Code Win32 vers Linux (stdin/stdout)
    Par MonsieurAk dans le forum Linux
    Réponses: 2
    Dernier message: 26/04/2006, 17h27
  4. [XSLT] [Flux][Xalan] ResultSet vers stdout en passant par un XSLT
    Par B&B dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 02/08/2005, 09h22
  5. descripteur stdin stdout
    Par discogarden dans le forum Réseau
    Réponses: 10
    Dernier message: 08/01/2003, 23h25

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