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:
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:
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 !
:arrow: 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é...
:arrow: 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...
Re: flux stdin/stdout [2 questions]
Citation:
Envoyé par MonsieurAk
:arrow: 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é...
:arrow: 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
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).