From: Guido De Rosa Date: 2010-03-09T03:55:57+09:00 Subject: daemonize, redirect stdin and stdout and write a pidfile Hi! the subject is a very standard requirement and should be done in a very standard way: through ruby core, stdlib or some very popular gem, like Daemons ( http://daemons.rubyforge.org/ ) Anyway, I don't know how to do something like this: # THIS CODE IS NOT VALID AND CERTAINLY WILL FAIL require 'daemons' require 'myclass' options = { :pidfile => '/var/run/myprog.pid' :stdout_to => '/var/log/myprog/myprog.log' :stderr_to => '/var/log/myprog/myprog.err' } Daemons.call(options) do MyClass.run! # contains an endless event loop end Unfortunately, such options do not exist :-( How to implement what is expressed in my pseudo-code? BTW, I have rolled-my-own temporary solution, but I'm loking for something more robust/standard: pid = fork do # redirects to logfiles STDOUT.reopen(config[:stdout_to], 'w') STDERR.reopen(config[:stderr_to], 'w') # buffered I/O on log files, sync them upon request! Signal.trap('USR1') do STDOUT.flush STDERR.flush end MyClass.run! # traps SIGINT/SIGTERM and should exit gacefully # the child process remove the pidfile on exit FileUtils.rm config[:pidfile] if File.exists? config[:pidfile] end # the parent process writes the pidfile if config[:pidfile] File.open config[:pidfile], 'w' do |f| f.write pid end end Thanks for any suggestion! Guido -- Posted via http://www.ruby-forum.com/.