background tasks in Ruby e linux
A volte negli script Ruby ho bisogno di controllare l’esecuzione di un comando eseguito in modalita’ asincrona, ho creato pertanto una classe apposita: class BackgroundJob def initialize(cmd) @pid = fork do # this code is run in the child process # you can do anything here, like changing current directory or reopening STDOUT exec cmd end end def stop! # kill it (other signals than TERM may be used, depending on the program you want # to kill. The signal KILL will always work but the process won't be allowed # to cleanup anything) Process.kill "TERM", @pid # you have to wait for its termination, otherwise it will become a zombie process # (or you can use Process.detach) Process.wait @pid end end come si usa ? Molto semplice: ...