Programmation.ruby : sortie standard
Posté par arno () le 11 septembre 2007
0
Bonjour, j'essaie de me mettre un peu à ruby en ce moment et j'ai un petit soucis. Je n'arrive pas à capter où part ma chaine dans ce bout de code:
def every_n_seconds(n)
loop do
avant = Time.now
yield
intervalle = n - (Time.now - avant)
sleep(intervalle) if intervalle > 0
end
end
every_n_seconds(1) do
puts "gruik"
end
Lorsque j'éxecute ce script, dans un terminale, tout semble au poil et la bête grogne comme prévu. Par contre, si j'essaie de rediriger la sortie dans un fichier (./gruik.rb > gruik.log) ou de la traiter avec un pipe (./gruik | dzen2)... plus personne... le calme plat! Le fichier est bien créé mais reste vide et dzen2 ne semble rien recevoir. :(
Mon but c'était de surveiller /proc/net/dev pour calculer l'utilisation du réseau et d'envoyer la sortie sur dzen2 [http://gotmor.googlepages.com/dzen]. Malheureusement je me retrouve largué alors que j'avais quasi fini... comment faire ?
> Lire le message (3 commentaires, moyenne: 3).
Vous avez demandé le commentaire #865875.



Peut-être une solution ....
Il semble que ce qui est envoyé sur la sortie standard est
gardée dans un buffer.
2 solutions :
STDOUT.sync = true au début du programme
ce qui oblige à écrire au fur et à mesure vers la sortie standard
ou
STDOUT.flush à la fin qui vide le buffer.
[ Répondre ]
[^]Re: Peut-être une solution ....
Extra, problème résolu. Merci beaucoup. :)
[ Répondre ]