Райан Томайко коснулся довольно сильного шторма с этот пост об использовании команд управления процессом Unix.
Мы должны делать больше этого. Это намного больше. Я говорю о fork (2), execve (2), pipe (2), socketpair (2), select (2), kill (2), sigaction (2) и т.д. И т.д. Это наши друзья. Они хотят так сильно помочь нам.
У меня есть немного кода (клон delayed_job
для DataMapper, который, как мне кажется, будет соответствовать этому, но я не понимаю, как использовать перечисленные команды. Любые идеи о том, как улучшить это код?
def start
say "*** Starting job worker #{@name}"
t = Thread.new do
loop do
delay = Update.work_off(self)
break if $exit
sleep delay
break if $exit
end
clear_locks
end
trap('TERM') { terminate_with t }
trap('INT') { terminate_with t }
trap('USR1') do
say "Wakeup Signal Caught"
t.run
end
end