setitimer(2) FreeBSD 一般コマンドマニュアル

setitimer

前のページ 上に戻る 次のページ

setitimer




書式

     #include <sys/time.h>
     #define ITIMER_REAL      0
     #define ITIMER_VIRTUAL   1
     #define ITIMER_PROF      2

     int
     getitimer(int which, struct itimerval *value);

     int
     setitimer(int which, const struct itimerval *value,
             struct itimerval *ovalue);


解説

     システムは、各プロセスに <sys/time.h> で定義された 3 つのインターバルタイ
     マを提供しています。 getitimer() システムコールは which で指定されたタイ
     マの現在の値を value 構造体に返します。 setitimer() システムコールはタイ
     マを指定の value に設定します (ovalue が nil でない場合、タイマの以前の値
     が返されます)。

     タイマの値は itimerval 構造体によって定義されます。

           struct itimerval {
                   struct  timeval it_interval;    /* タイマインターバル */
                   struct  timeval it_value;       /* 現在の値 */
           };

     it_value が 0 でない場合、それは次にタイマが時間切れになるまでの時間を示
     します。 it_interval が 0 でない場合、それはタイマが時間切れになるときに
     it_value を再設定するのに使用される値を指定します。 it_value を 0 に設定
     すると、タイマは it_interval の値に関係なく無効になります。 it_interval
     を 0 に設定すると、次の時間切れの後でタイマは無効になります (it_value が
     0 でないと想定します)。

     システムクロックの精度 (通常は 10 ミリ秒です) より小さい時間の値はこの精
     度に切り上げられます。

     ITIMER_REAL タイマはリアルタイムで減少していきます。このタイマが時間切れ
     になると SIGALRM シグナルが配信されます。

     ITIMER_VIRTUAL タイマはプロセス仮想時間で減少します。このタイマが減るのは
     プロセスが実行中のときだけです。時間切れになるときに SIGVTALRM シグナルが
     配信されます。

     ITIMER_PROF タイマは、プロセス仮想時間内およびシステムがプロセスのために
     処理を行っているときの両方で減少します。これは、インタプリタがプログラム
     の実行を統計的にプロファイルするときに使用するように設計されています。
     ITIMER_PROF タイマが時間切れになるたびに SIGPROF シグナルが配信されます。
     このシグナルは進行中のシステムコールに割り込むかもしれないので、このタイ
     マを使用しているプログラムは割り込まれたシステムコールを再実行する準備を
     しておかなければなりません。
     getitimer() と setitimer() は次の場合に失敗します。

     [EFAULT]           value パラメータが無効なアドレスを指定しました。

     [EINVAL]           value パラメータが、大きすぎて処理できない時間を指定し
                        ました。


関連項目

     gettimeofday(2), select(2), sigvec(2), clocks(7)


歴史

     getitimer() 関数は 4.2BSD で登場しました。

FreeBSD 4.4                      May 16, 1995                      FreeBSD 4.4

ABELNET VPSサービス