Bonjour a tous,
Je cherche a rediriger la sortie de la commande tail -f "nom_fichier" lancé par un processus fils vers l'entrer standard du processus père.
Objectif : récupérer en temps réel les modifications périodique de ce fichier.
Problème : je parviens avec le code suivant a rediriger la sortie de la commande tail vers l'entrée standard du processus père. Si je tape "tail -2 /usr/local/sbin/trace.txt", cela fonctionne toujours mais si je tape "tail -f /usr/local/sbin/trace.txt" alors le processus père reste bloqué en lecture, il ne reçoit pas la sorite de la commande.
rd, wr = IO.pipe
if fork
# fork renvoi un entier > 0 processus pere
wr.close
puts "Je suis le processus pere\n"
$stdin.reopen(rd)
printf($stdout, "#{rd.read} \n")
rd.close
else
# fork renvoi 0, code du fils
rd.close
$stdout.reopen(wr)
exec "tail /usr/local/sbin/trace.txt"
wr.close
end
toutes remarques seraient les bienvenues.
Merci
Forum Programmation.ruby Redirection de commande
5
mai
2006
# popen
Posté par Pascal Terjan (site web personnel) . Évalué à 2.
[pterjan@localhost tmp]$ irb irb(main):001:0> io=IO.popen("tail -f test.rb") => #<IO:0xb7ced9d0> irb(main):002:0> io.readline => "\t\th = Net::HTTP.new(uri.host)\n" irb(main):003:0> io.readline => "\t\tbegin\n" irb(main):004:0> io.readline => "\t\t\tresp,data = h.get(uri.path, {'User-Agent'=>\"My nice app\"})\n" irb(main):005:0> io.readline => "\t\trescue\n" irb(main):006:0> io.readline => "\t\tend\n"[^] # Re: popen
Posté par smiley35700 . Évalué à 1.
[^] # ça marche !
Posté par smiley35700 . É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.