Tôi có đoạn code sau đây, nơi một trường hợp WEBrick được chia hai, và tôi muốn chờ đợi cho đến khi webrick được khởi chạy, trước khi tiếp tục với phần còn lại của mã:Fork WEBrick và chờ đợi bắt đầu
require 'webrick'
pid = fork do
server = WEBrick::HTTPServer.new({:Port => 3333, :BindAddress => "localhost"})
trap("INT") { server.shutdown }
sleep 10 # here is code that take some time to setup
server.start
end
# here I want to wait till the fork is complete or the WEBrick server is started and accepts connections
puts `curl localhost:3333 --max-time 1` # then I can talk to the webrick
Process.kill('INT', pid) # finally the webrick should be killed
Vì vậy, làm thế nào tôi có thể chờ đợi cho đến khi ngã ba là hoàn thành, hoặc thậm chí tốt hơn cho đến khi WEBrick đã sẵn sàng chấp nhận các kết nối? Tôi tìm thấy một đoạn mã nơi họ xử lý một số IO.pipe
và một người đọc và một nhà văn. Nhưng điều đó không chờ đợi cho webrick tải.
Rất tiếc, tôi không tìm thấy bất kỳ điều gì cho trường hợp cụ thể này. Hy vọng ai đó có thể giúp đỡ.
tuyệt vời! Tôi chỉ thay thế 'rd.read (1) của bạn; rd.close' với 'nâng cao 'Máy chủ không bắt đầu" trừ khi rd.wait (10) 'để tôi có thể chỉ định một thời gian chờ và nâng cao một lỗi. Cảm ơn câu trả lời! – 23tux