bin/sample_forking_server in bluepill-0.0.68 vs bin/sample_forking_server in bluepill-0.0.69

- old
+ new

@@ -13,41 +13,54 @@ # (5) Observe the worker being killed in the watch you started in step 3. require 'socket' port = ARGV[0].to_i -port = 4242 if port == 0 +port = 4242 if port.zero? acceptor = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0) address = Socket.pack_sockaddr_in(port, '127.0.0.1') acceptor.bind(address) acceptor.listen(10) children = [] -trap('EXIT') { acceptor.close; children.each {|c| Process.kill('QUIT', c)} } +trap('EXIT') do + acceptor.close + children.each { |c| Process.kill('QUIT', c) } +end - 3.times do children << fork do - trap('QUIT') {$0 = "forking_server| QUIT received shutting down gracefully..."; sleep 5; exit} - trap('INT') {$0 = "forking_server| INT received shutting down UN-gracefully..."; sleep 3; exit} + trap('QUIT') do + $0 = 'forking_server| QUIT received shutting down gracefully...' + sleep 5 + exit + end + trap('INT') do + $0 = 'forking_server| INT received shutting down UN-gracefully...' + sleep 3 + exit + end - puts "child #$$ accepting on shared socket (localhost:#{port})" - loop { - socket, addr = acceptor.accept - socket.write "child #$$ echo> " + puts "child #{$PROCESS_ID} accepting on shared socket (localhost:#{port})" + loop do + socket, _ = acceptor.accept + socket.write "child #{$PROCESS_ID} echo> " socket.flush message = socket.gets socket.write message socket.close - puts "child #$$ echo'd: '#{message.strip}'" + puts "child #{$PROCESS_ID} echo'd: '#{message.strip}'" # cause a spike in mem usage - temp = "*" * (100 * 1024) - } + '*' * 2**20 + end exit end end -trap('INT') { puts "\nbailing" ; exit } +trap('INT') do + puts "\nbailing" + exit +end Process.waitall