sto imparando la programmazione di sistemi attraverso rubino e sto avendo difficoltà a capire questo comportamento:Hai bisogno di aiuto comprensione del rubino 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)
Questo uscite come mi aspetto:
hello!
hello!
hello!
hello!
Terminating
Tuttavia, se io commento Process.detach, il processo figlio sembra rispondere solo al segnale una volta (e dopo il termine?):
Terminating
hello!
Sono confuso sul motivo per cui ciò accade quando non scollego il processo, anche se l'ho inviato USR1 quattro volte. Qualcuno può aiutare a spiegare questo comportamento? Penso di non capire cosa significhi staccare un processo.
Grazie mille!
ah, grazie! Sì, immagino che la programmazione sia ciò che mi confonde (sono su OSX, dovrei provarlo su una scatola virtuale e vedere cosa succede). – ambertch