まつもと ゆきひろです
In message "[ruby-list:7437] Re: [Q] Thread"
on 98/04/13, Yukihiro Matsumoto <matz / netlab.co.jp> writes:
|それよりなによりlibreadlineの中でSIGVTARLMのハンドラが上書き
|されちゃってるみたいです.これではコンテキストスイッチできま
|せん.困った.
ハンドラが上書きされているせいではなくて,これはreadlineがす
ぐselectで待ってしまうためITIMER_VIRTUALがexpireしないせいの
ようです.
# そんなことってあるの? 知らんかった.
で,とりあえずは
--
static int readline_event()
{
CHECK_INTS;
#ifdef THREAD
if (!thread_critical) thread_schedule();
#endif
}
--
という風な定義にしておいて
--
buff = readline(prompt);
--
のまわりのTRAP_BEG/TRAP_ENDを取り除いてから
--
rl_event_hook = readline_event;
--
を設定すれば良いように思います.
もしかするとInit_readline()の末尾に
--
rl_clear_signals();
--
も必要かも.
まつもと ゆきひろ /:|)