From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?= ) Date: 1998-03-18T03:30:55+09:00 Subject: [ruby-dev:1847] Re: trap and throw problem けいじゅ@日本ラショナルソフトウェアです. In [ruby-dev :01840 ] the message: "[ruby-dev:1840] Re: trap and throw problem ", on Mar/17 17:25(JST) Yukihiro Matsumoto writes: >|あとで, ちょっと調べてみましょう. >よろしく. しらべました. やはり, linuxのlibc5(?)の問題っぽいですね: #include #include // jmp_buf env; sigjmp_buf env; void sig() { siglongjmp(env, 1); } main() { char buf[1024]; char *p; sigsetjmp(env, 0); //setjmp(env); while (1) { signal(SIGINT, sig); printf("in> "); p = buf; for (p = buf; *p = getc(stdin); ++p) { if (*p == '\n') break; } *p = 0; printf("out> %s\n", buf); if (strcmp(buf, ".") == 0) exit(0); } } 以上のコードで確かめましたが, しっかり再現しました. # sig(set)?jmpを\1jmpに代えても同じ. あとは, この問題に対してrubyとして対応するかだけ(?)の問題になりました. 前にもいったように, ハンドラ中でthrow/raiseしたらそれまでの入力を捨て てくれる仕様ならば, この問題は解決すると思いますが... __ ................................石塚 圭樹@日本ラショナルソフトェア... ----------------------------------->> e-mail: keiju@rational.com <<---