From: Okada Jun Date: 2001-04-04T19:04:23+09:00 Subject: [ruby-dev:12764] trap & signal 岡田です。 threadを使っている時にtrapでsignalを捕捉すると、どうも変な動作をします。 Linux 2.0.36 (debian) ruby 1.6.2 (2000-10-18) [i486-linux] で以下のようなスクリプトで動作を試してみました。 #!/usr/bin/ruby -Ke trap 'SIGTERM' do p 'signal' end p $$ Thread::start do begin p 'sub begin' sleep 100 ensure p 'sub end' end end begin p 'main begin' sleep 100 ensure p 'main end' end killされるとそれをtrapして終了はせずにメッセージだけ表示させたいわけですが、 メッセージを表示した後にそのままスクリプトが終了してしまいます。 また、trapの部分を trap 'SIGTERM', 'EXIT' とすると、今度はkillを二回発行しないとスクリプトが終了してくれません。 どちらも微妙に直感に反する動作なのですが、これってバグでしょうか? 仕様だとすると内部的にはどういう動作をしているのでしょう? -- ゆん(岡田 潤) yun@nekome.net http://www.nekome.net/