Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

       timeradd, timersub, timercmp, timerclear, timerisset - timeval の操作

書式

       #include <sys/time.h>

       void timeradd(struct timeval *a, struct timeval *b,
                     struct timeval *res);

       void timersub(struct timeval *a, struct timeval *b,
                     struct timeval *res);

       void timerclear(struct timeval *tvp);

       int timerisset(struct timeval *tvp);

       int timercmp(struct timeval *a, struct timeval *b, CMP);

   glibc 向けの機能検査マクロの要件 (feature_test_macros(7)  参照):

       All functions shown above:
           Since glibc 2.19:
               _DEFAULT_SOURCE
           Glibc 2.19 and earlier:
               _BSD_SOURCE

説明

       timeval  構造体を操作するためのマクロが提供されている。 timeval 構造体は <sys/time.h> で以
       下のように定義されている。

           struct timeval {
               time_t      tv_sec;     /* 秒 */
               suseconds_t tv_usec;    /* マイクロ秒 */
           };

       timeradd()  は、 ab の時刻値を加算し、その合計を res により参照される timeval 構造体に
       格納する。結果は、 res->tv_usec の値が 0 から 999,999 の範囲に入るように正規化される。

       timersub()   は、  a  の時刻値から  b  の時刻値を減算し、その結果を  res  により参照される
       timeval 構造体に格納する。結果は、 res->tv_usec の値が 0 から 999,999 の範囲に入るように正
       規化される。

       timerclear()  は tvp により参照される timeval 構造体を 0 で埋める。 0 で埋められた timeval
       構造体は、時刻紀元 (Epoch; 1970-01-01 00:00:00 +0000 (UTC)) を表す。

       timerisset()  は、 tvp により参照される timeval 構造体のいずれか一方のフィールドに 0  以外
       の値が入っていれば、 真 (0 以外) を返す。

       timercmp()   は ab の時刻値を比較演算子 CMP を使って比較し、比較結果に基づき、真 (0 以
       外) か偽 (0) を返す。 (Linux/glibc はそうではないが)  いくつかのシステムでは、  timercmp()
       の実装がおかしく、  CMP>=, <=, == を指定すると正しく動作しない。 移植性が必要なアプリ
       ケーションでは、 代わりに以下を使うこと。

           !timercmp(..., <)
           !timercmp(..., >)
           !timercmp(..., !=)

返り値

       timerisset()  と timercmp()  は、真 (0 以外) か偽 (0) を返す。

エラー

       エラーは定義されていない。

準拠

       POSIX.1 にはない。 ほとんどの BSD 由来のシステムには存在する。

関連項目

       gettimeofday(2), time(7)

この文書について

       この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの
       説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。