スポンサーリンク

CLOCK_GETTIME(2) FreeBSD システムコールマニュアル CLOCK_GETTIME(2)

名称

clock_gettime, clock_settime, clock_getres − 日付と時刻の取得/設定/精度の 取得をする

ライブラリ

標準 C ライブラリ (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 引数には、次の 4 つの値のうちの 1 つを指定します。 CLOCK_REALTIME は普通の時計のように進む時間、 CLOCK_MONOTONIC は SI 単位 系の秒で進む時間、 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]
スーパユーザ以外のユーザが時刻を設定しようとしました。

関連項目

date(1), adjtime(2), ctime(3), timed(8)

規格

clock_gettime(), clock_settime() および clock_getres() システムコールは IEEE Std 1003.1b-1993 (‘‘POSIX.1’’) に適合しています。

FreeBSD 10.0 June 17, 2004 FreeBSD 10.0

スポンサーリンク