5部 関数リファレンス

alarm

alarm
alarm SECONDS



引数で指定した秒数が経過した後に、自プロセスにシグナルアラームが送られてくるようにします。一度に1つのタイマだけが設定可能です。

この関数を呼び出すと、前回のタイマは無効になります。引数を0に指定して呼び出すと、タイマを起動しないで以前のタイマをキャンセルすこともできます。
以前のタイマの残り時間が、返却値となります。

1 秒より精度の高いスリープを行なうには、Perlsyscall関数を使うことができます
setitimerをサポートしているシステムに限ります。サポートしていなければ、selectの項を参照してください)。

プロセスについては用語集「プロセス」を参照してください。

alarmの使い方

alarmをシステムコールの時間切れのために使う場合、下記のようにeval/dieのペアを利用してください。alarmsleepの組み合わせはうまく動作しない可能性があります。

eval {
	local $SIG{ALRM} = sub { die "time out\n" };
	alarm 5;
	$buf = ;
	alarm 0;
};
if ($@) {
	die unless $@ eq "alarm\n";
}

関連記事