Ich bin Systemprogrammierung durch Rubin lernen, und ich habe Probleme dieses Verhalten zu verstehen:Brauchen Sie Hilfe Process.detach rubin Verständnis
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)
Diese Ausgänge als ich erwarten:
hello!
hello!
hello!
hello!
Terminating
Allerdings, wenn ich Kommentar aus Process.detach, scheint das Kind Prozess nur einmal auf das Signal zu reagieren (und nach Beendigung?):
Terminating
hello!
Ich bin verwirrt, warum das passiert, wenn ich den Prozess nicht abtrenne, obwohl ich ihn viermal gesendet habe. Kann jemand helfen, dieses Verhalten zu erklären? Ich denke, ich verstehe nicht, was es bedeutet, einen Prozess zu lösen.
Vielen Dank!
ah, danke! Ja, ich denke, die Planung ist das, was mich verwirrt (ich bin auf OSX, sollte es auf einer virtuellen Box versuchen und sehen, was passiert). – ambertch