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 #865873.

au pif...

Posté par NeoX () le 11/09/2007 à 17:14. (lien). Évalué à 1.


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


et par contre il continue d'afficher "gruik" en ligne de commande ?
si c'est le cas, c'est peut-etre que le puts ne sort pas sur la sortie standard (STDOUT) mais peut-etre sur STDERR ?

--
Apprendre par les autres, c'est bien.
Apprendre par soi-meme (RTFM, man, et notre ami google) c'est mieux

[ Répondre ]