パッケージ内でシグナルをハンドリングしたい
[上に]
[前に]
[次に]
ガバポン
2000/06/10(土) 15:31:23
alarmをハンドリングして、無限ループから抜け出す
CGIを作成したいのです。
そこでコマンドラインで実験したのですが、
------------------------------------------------ alarm.cgi
$SIG{'ALRM'} = "TimeOut";
alarm(5);
while(1) { print "aaa\n"; }
exit;
sub TimeOut {
print "alarm\n";
exit;
}
------------------------------------------------
↑は、うまくいきました。
でも、↓のような構成にすると失敗します。
無限ループが無限に続きます。なぜでしょうか?
プラットフォームはSolaris2.6です。
------------------------------------------------alarm.pl
package alarm;
$SIG{'ALRM'} = "TimeOut";
alarm(5);
sub TimeOut {
print "alarm\n";
exit;
}
1;
------------------------------------------------alarm.cgi
require 'alarm.pl';
while(1) { print "aaa\n"; }
exit;
------------------------------------------------
?_?
2000/06/10(土) 15:55:55
パッケージ"alarm"内のサブルーチンを呼ぶ出すんだから、
$SIG{'ALRM'} = "alarm::TimeOut";
とすればいいだろ。
B-Cus
2000/06/10(土) 19:18:26
ふつー、$SIG{'ALRM'} = \&TimeOut; では。
ラクダ本にも書いてあるし。
秘密
2000/06/10(土) 20:31:12
割り込み質問ですが、
alarm::TimeOut と alarm'TimeOut の違いは何?
パーラー初心者
2000/06/11(日) 05:32:06
>alarm::TimeOut と alarm'TimeOut の違いは何?
同じじゃないんですか?
[上に]
[前に]
[次に]