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 ?
# au pif...
Posté par NeoX . Évalué à 1.
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 ?
# Peut-être une solution ....
Posté par jlh . Évalué à 7.
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.
[^] # Re: Peut-être une solution ....
Posté par fusible . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.