Skip to content

Instantly share code, notes, and snippets.

@mwotton
Created September 13, 2011 02:08
Show Gist options
  • Save mwotton/1212984 to your computer and use it in GitHub Desktop.
Save mwotton/1212984 to your computer and use it in GitHub Desktop.
slaved
def slaved(processes)
pids = []
processes.times do
res=Kernel.fork
if res
pids << res
else
yield
exit 0
end
end
puts pids
['TERM', 'HUP', 'INT'].each {|trap|
Signal.trap(trap) { pids.each {|pid|
puts "killing #{pid}"
Process.kill('TERM', pid) ; }}}
pids.each {|p| Process.waitpid(p) }
end
slaved(3) { 10.times { sleep 1; puts "hi" } }
puts "finished"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment