tôi đang học lập trình hệ thống thông qua ruby và tôi đang gặp rắc rối tìm hiểu hành vi này:Cần giúp đỡ để hiểu ruby của Process.detach
pid = fork do
Signal.trap("USR1") do
puts "hello!"
end
Signal.trap("TERM") do
puts "Terminating"
exit
end
loop do
end
end
Process.detach(pid)
Process.kill("USR1", pid)
Process.kill("USR1", pid)
Process.kill("USR1", pid)
Process.kill("USR1", pid)
Process.kill("TERM", pid)
đầu ra này như tôi mong đợi:
hello!
hello!
hello!
hello!
Terminating
Tuy nhiên nếu Tôi nhận xét Process.detach, quá trình con dường như chỉ phản hồi tín hiệu một lần (và sau khi chấm dứt?):
Terminating
hello!
Tôi đang bối rối là tại sao điều này xảy ra khi tôi không tách rời quá trình, mặc dù tôi đã gửi nó USR1 bốn lần. Ai đó có thể giúp giải thích hành vi này? Tôi nghĩ tôi không hiểu ý nghĩa của việc tách rời một quá trình.
Cảm ơn bạn rất nhiều!
ah, cảm ơn! Vâng tôi đoán lịch trình là những gì là khó hiểu với tôi (Tôi đang ở trên OSX, nên thử nó trên một hộp ảo và xem những gì sẽ xảy ra). – ambertch