Retourner aux forums || Retourner au forum Programmation.c
Programmation.c : Forcer le flush d'un application
Posté par Snarky (Jabber id, page perso, ) le 15 mai 2007Voilà, j'ai un petit problème avec une application sur lequel j'avais commencé une conversation sur un autre forum mais qui manque de réponse peut-être à cause de son niveau, donc je la tente avec des gens peut-être plus expert.
Conversation originale :
http://www.developpez.net/forums/showthread.php?p=2069429
En résumé :
J'aimerai forcer le flush du buffer de sortie (enfin, je pense que c'est une question de buffer) de certaine application comme le fait les consoles.
Je suis actuellement coincé sur Blender.
Si je fait dans une console :
$ blender 2>&1 > out.txtet dans une autre :
$ tail -f out.txtLe fichier "out.txt" ne se rempli que quand je quitte Blender. Tandis que autre application (genre mplayer) se rempli bien au fur et à mesure.
Mais si je lance blender simplement dans une console, j'ai bien la sortie au fur et à mesure. Donc il y'a une rétention de sortie quelque part que la console arrive à récuperer.
Si quelqu'un saurai comment faire (en C de préférence) je lui en serai très reconnaissant :)
Snark
Milite pour un about:black sur les navigateurs ! (Sauvons la planète)
.
Qu'est ce que cela donne en effectuant une redirection de STDERR directement dans le fichier, plutot que de passer par une double redirection ?
$ blender 2>&out.txt
-
[^]Re: .
Posté par Snarky (Jabber id, page perso, ) le 15/05/2007 à 13:50. (lien). Évalué à 2.Avec ta commande, ça me donne
bash: out.txt : redirection ambigûe
Mais si tu veux parler de$ blender 2> out.txt
ça ne donne rien parce qu'il n'y a pas d'erreur.--
Milite pour un about:black sur les navigateurs ! (Sauvons la planète)-
[^]Re: .
Posté par NeoX () le 15/05/2007 à 13:56. (lien). Évalué à 1.d'apres mes docs
http://tldp.org/LDP/abs/html/io-redirection.html
command &>filename
devrait faire ce qu'il te demande...--
Apprendre par les autres, c'est bien.
Apprendre par soi-meme (RTFM, man, et notre ami google) c'est mieux-
[^]Re: .
Posté par NeoX () le 15/05/2007 à 14:02. (lien). Évalué à 1.et une petite recherche google ou ici sur linuxfr :
http://linuxfr.org/tips/108.html--
Apprendre par les autres, c'est bien.
Apprendre par soi-meme (RTFM, man, et notre ami google) c'est mieux
-
-
[^]Re: .
-
le problème est dans blender
Je dirais que quand Blender a sa sortie dans une console, il fait bien un "flush" à chaque fin de ligne, tandis que quand la sortie est dans un fichier, ce n'est pas le cas.
Ce comportement n'est peut-être pas dans Blender directement, mais peut-être dans l'implémentation dans la libc (à vérifier). Je crains qu'il n'y ait pas de solution à ton problème.
Personnellement, je redirige plutôt dans cet ordre : blender >out.txt 2>&1 mais je ne sais pas si ça change quelque chose.
Note que tu peux aussi faire un blender 2>&1 | tee out.txt.
-
[^]Re: le problème est dans blender
Posté par Toto () le 15/05/2007 à 16:31. (lien). Évalué à 4.Si l'ordre des redirections change :
Exemple
$ cmd >/dev/null 2>&1
Etat Initial :
1 : STDIN
2 : STDERR
1ere redirection
1 : /dev/null
2 : STDERR
2eme redirection
1 : /dev/null
2 : /dev/null
----------------------------------
2>&1 >/dev/null
Etat Initial :
1 : STDIN
2 : STDERR
1ere redirection
1 : STDIN
2 : STDIN
2eme redirection
1 : /dev/null
2 : STDIN
-
[^]Re: le problème est dans blender
Posté par Olivier Jeannet () le 21/05/2007 à 16:13. (lien). Évalué à 1.Bonne réponse; petite remarque, tu as juste écrit "STDIN" au lieu de "STDOUT", je pense que les connaisseurs auront corrigés d'eux-mêmes (peut-être pas les débutants).
-
Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.c



Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.