From: Akira Tanaka <akr@...> Date: 2012-03-18T14:05:26+09:00 Subject: [ruby-dev:45385] [ruby-trunk - Feature #1952] cannot stop with Ctrl+C Issue #1952 has been updated by Akira Tanaka. Assignee changed from Yukihiro Matsumoto to Koichi Sasada Priority changed from High to Normal % Done changed from 100 to 0 開発者会議で笹田さんなどと議論したところ、 以下のスクリプトで、2回め以降の ^C で 1 が表示されないのはバグであるという 結論になりました。 % ruby -ve ' Thread.new do begin begin p 1 sleep ensure raise end rescue retry end end.join ' ruby 2.0.0dev (2012-03-16 trunk 35049) [x86_64-linux] 1 ^C1 ^C^C^C^C^C^C^C ^C でメインスレッドが死んだ後、他のスレッドを殺すのに 各スレッドに例外を投げるわけですが、一発で死なない場合、 それ以降人間が ^C を送っても無視される、というのが問題で、 人間が ^C を送る度に例外を再度投げるのが適切であろう、 という点には合意に達して、笹田さんが直すとのことです。 なお、何回投げても死なない、というのはプログラムがそのように書かれているということで、 それを無理やり殺す、というのは、New Feature であろう、ということで 上記の直す範囲には入りません。 ---------------------------------------- Feature #1952: cannot stop with Ctrl+C https://bugs.ruby-lang.org/issues/1952#change-24691 Author: Usaku NAKAMURA Status: Assigned Priority: Normal Assignee: Koichi Sasada Category: core Target version: 2.0.0 =begin 以下のスクリプトがCtrl+Cで停止せず、Ctrl+C押下後はkill -9でしか殺せません。 Thread.new do begin begin sleep ensure raise end rescue retry end end.join =end -- http://bugs.ruby-lang.org/