ビギナーズ CGI

 初歩から始める初心者向けPerl-CGI講座  

| トップページ | CGI設置 | CGI作成 | 作成事例 | 設置用語 | 作成用語 | 関数リファレンス | FAQ | お問合せ |
  
CGIの設置方法
フリーで配布されているCGIを設置する際の手順や注意事項などの説明です。

CGI作成の初歩
初めてCGIを作る方向けの手順を簡単な例で説明しています。

CGI作成ヒント集
こういう事をする時は、どのように行えばいいのか?など具体的な事例を紹介します。

CGIの設置に関する用語
CGIの作成に関する用語
CGIの設置や作成時に使われている用語や関連知識を掲載しています。

設置に関するFAQ
作成に関するFAQ
設置や作成をする際に起こりがちなトラブルの説明と、よくある質問とその回答を掲載しています。

関数リファレンス
関数や演算子、特殊記号の意味や使い方を説明しています。


 
 
alarm

alarm は実行中のスクリプト自身に対して、指定秒数後にシグナル SIGALARM を送ります。
送信されるシグナルとは実行中のスクリプトに割り込んで信号を伝えるもので、例えば Linux
でpingをした時、送信回数を指定しないと ping を送り続けますが Ctrl + C を押すと SIGINT
シグナルが送られ、プロセスはシグナルを受け取って終了させるなどの処理をします。
alarm は SIGALARM シグナルを指定秒数後に送るもので、長時間動作するかもしれない
プロセスを経過時間によって強制終了するのに利用できます。

書式例 (alarmのセットと解除)
alarm
 シグナル送信までの秒数を指定する
を 0にするとセットしたタイマーをキャンセルする事ができます。
指定時間になるとプロセスは強制終了します。


書式例 (alarmシグナルの受け取り)
$SIG{'ALARM'} = サブルーチンなど
上のようにすると、シグナルを受け取った時、強制終了する前に
何らかの処理をさせる事ができます。
上記のようにサブルーチンを指定すると、シグナルを受け取った際に
サブルーチンを実行する事ができます。

例えばファイルのロック処理などの場合、ロックを解除したり、下の
サンプルソースでは 文字列を表示させています。



alarm は受け取ると、その時点で処理を強制終了します。
例えば下の例では for で無限ループとなっていますので、永遠に A という文字列が
表示され続けるはずですが、 alarm (1) としていますので開始から1秒後に強制終了
します。





下のようにするとシグナルを受け取った場合、強制終了する前に何らかの処理をする
事ができ、サンプルソースでは 処理がタイムアウトしました という文字列を表示しています。




上の処理では無限ループなので alarm を解除する必要はありませんが、実際に使う場合
は正常に処理できたら alarm (0) として解除しないと、正常に処理できた場合にもシグナル
が一定時間後に発生してしまうなどの不具合となります。
alarm で終了する処理を加える場合は必ず、正常動作した場合に alarm を解除する処理を
加えて下さい。





Beginner's CGI  - Copyright (C) 2003 aimix. All Rights Reserved -