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

clock_settime

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

clock_settime


     Standard C Library (libc, -lc)


書式

     #include <sys/time.h>

     int
     clock_gettime(clockid_t clock_id, struct timespec *tp);

     int
     clock_settime(clockid_t clock_id, const struct timespec *tp);

     int
     clock_getres(clockid_t clock_id, struct timespec *tp);


解説

     clock_gettime() と clock_settime() は clock_id で指定するクロックの値を取
     得、設定します。

     clock_id には、次の 3 つの値のうちの 1 つを指定します。 CLOCK_REALTIME は
     普通の時計のように進む時間、 CLOCK_VIRTUAL は呼び出しプロセスのために CPU
     がユーザモードで実行されているときにだけ進む時間、 CLOCK_PROF は、CPU が
     ユーザモードまたはカーネルモードで実行されているときに進む時間です。

     tp によって指される構造体は <sys/time.h> 内で次のように定義されています。

     struct timespec {
             time_t  tv_sec;         /* 秒 */
             long    tv_nsec;        /* ナノ秒 */
     };

     時刻を設定できるのはスーパーユーザだけです。システムの安全性レベル
     (securelevel) が 1 より大きい場合 (init(8) を参照)、時間は進めることだけ
     ができます。この制限は、悪意のあるスーパーユーザがファイルに任意のタイム
     スタンプを設定するのを防止するためのものです。しかし、システムが安全なモ
     ードの時でも、 adjtime(2) システムコールを使用すればシステム時間を遅らせ
     ることができてしまいます。

     クロックの精度 (細かさ) は、 clock_getres() 呼び出しによって返されます。
     この値は、 (非 NULL ポインタ) *tp 内に格納されます。


戻り値

     成功して終了したときには値 0 を返します。そうでない場合、値 -1 が返され、
     グローバル変数 errno が設定されてエラーを示します。


エラー

     次のエラーコードが errno に設定されます。

     [EINVAL]           clock_id が有効な値ではありませんでした。

     [EFAULT]           *tp 引数アドレスが無効なメモリを参照しています。

     [EPERM]            スーパユーザ以外のユーザが時刻を設定しようとしました。

ABELNET VPSサービス