Ciao,
vorrei realizzare un parser di log in real time, ovvero il processo rimane attivo e controlla i cambiamenti i in file. Via via che al file vengono aggiunte stringhe, il processo le intercetta e fa il parsing.
Qui di seguito cio' che per ora sono riuscito a fare, il problema e' che non riesco a far coesistere i due thread di lettura e parsing (che per ora mi basta scrivano cio' che accade). Con questo codice lo script ruby esce e 'tail' rimane in esecuzione...
codice:require 'thread' class LogParser def initialize(file2parse) @@file2parse = file2parse @queue = Queue.new end def fifo_build producer = Thread.new do IO.popen(@@file2parse) do |pipe| pipe.sync = true while str = pipe.gets @queue << str end end end end def printRes consumer = Thread.new do puts @queue.pop end end end parser = LogParser.new("tail -F -n 0 ~/test") parser.fifo_build parser.printRes

Rispondi quotando