Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

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 2007
Bonjour à tous,

Voilà, 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.txt
et dans une autre :
$ tail -f out.txt
Le 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)
> Lire le message (8 commentaires, moyenne: 1,8).  

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.

.

Posté par Toto () le 15/05/2007 à 13:22. (lien). Évalué à 2.

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: .

      Posté par Toto () le 15/05/2007 à 14:10. (lien). Évalué à 2.

      Hum l'habitude du zsh et ses commandes .. :p

      En bash, ca donnerais ca d'après la doc

      $ blender >out.txt 2>&1


      L'ordre des redirections est important

le problème est dans blender

Posté par Olivier Jeannet () le 15/05/2007 à 15:53. (lien). Évalué à 1.

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