From: matz@... (Yukihiro Matsumoto) Date: 1998-03-16T11:21:22+09:00 Subject: [ruby-dev:1796] Re: trap and throw problem まつもと ゆきひろです In message "[ruby-dev:1791] Re: trap and throw problem" on 98/03/16, Keiju ISHITSUKA writes: |けいじゅ@日本ラショナルソフトウェアです. |さらに, gets()中にthrowすると, バッファの中に前回読んだ文字列が溜って |いるらしく, 次にgets()すると前回と同じ文字が返ってきてしまいます. ええと,実行結果 |>fkslfk |fkslfk |>trap!! |>fkslfk |>fls の意味が良く分からなかったのですが,うちでは再現してないみた いです. matz@picachu[ruby] ruby /tmp/test.rb >lfasfjakj lfasfjakj ^C >trap!! >flsa flsa >flaslfja flaslfja ただし,二度目からは^Cが効かないのですが,これは[ruby-dev:1790] で報告されているものでしょう.[ruby-dev:1795]ではフラグを立 ててどうこう,と書きましたが,そういえばrubyのシグナルの実装 は 基本はフラグを立てるがシステムコールやライブラリルー チンの中では割込みがかかるように,直接呼び出す のでした.これをしないと,たとえばgetsの中で^Cを押しても enterキーを押すまでハンドラが動かなかったりして非常に使いに くいのでした.どうしたもんだか. まつもと ゆきひろ /:|)