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] [EPERM] 関連項目 |
規格
clock_gettime(), clock_settime() および clock_getres() システムコールは IEEE Std 1003.1b-1993 (‘‘POSIX.1’’) に適合しています。 FreeBSD 10.0 June 17, 2004 FreeBSD 10.0 |