adjtime

Section: C Library Functions (3)
Updated: 2026-02-08
Index JM Home Page roff page
 

名前

adjtime - システムクロックに同期する時刻を調整する  

ライブラリ

標準 C ライブラリ (libc-lc)  

書式

#include <sys/time.h>

int adjtime(const struct timeval *delta, struct timeval *olddelta);

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

adjtime()

    glibc 2.19 よりあと:
        _DEFAULT_SOURCE
    glibc 2.19 以前:
        _BSD_SOURCE
 

説明

adjtime() 関数は (gettimeofday(2) が返す) システムクロックを徐々に調整します。調整すべきクロックの時間量は delta が指す構造体で指定されます。この構造体は以下の形です:

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

delta の調整量が正の場合、調整量に達するまでシステムクロックを 少し割合だけスピードアップさせます (つまり、毎秒クロック値に少しだけ 時刻を加算します)。delta の調整量が負の場合、同様の方法でクロックを遅くします。

adjtime() が呼び出されたときに以前の adjtime() の呼び出しによるクロックの調整がまだ実行中で、かつ後の adjtime() の delta が NULL でない場合、実行中の調整は停止します。しかし、すでに実行された調整の取り消しは行われません。

olddelta が NULL でない場合、 olddelta が指すバッファーに、過去の調整要求でまだ完了せず残っている時間量が 格納して返されます。  

返り値

成功すると、 adjtime() は 0 を返します。失敗すると、-1 を返し、 errno にエラーを示す値を設定します。  

エラー

EINVAL
delta で指定された調整量が許可された範囲に入っていません。
EPERM
呼び出し者が時刻を調整するのに必要な権限を持っていません。Linux では CAP_SYS_TIME ケーパビリティが必要です。
 

属性

この節で使用されている用語の説明については、 attributes(7) を参照してください。
インターフェース属性
adjtime() Thread safetyMT-Safe
 

標準

なし。  

履歴

4.3BSD, System V.  

注意

adjtime() が行うクロックの調整は、クロックは常に単調増加するように行われます。adjtime() を使って時刻を調整することで、システムタイムの急激な正または負のジャンプ により、いくつかのアプリケーション (例えば make(1) など) で起こる問題を防ぐことができます。

adjtime() はシステム時刻に少しずつ調整を行うために使用されることを期待されています。ほとんどのシステムでは、 delta に指定できる調整量に制限を課しています。 glibc の実装では、 delta は (INT_MIN / 1000000 + 2) 以上 (INT_MAX / 1000000 - 2) 以下 (i386 では -2145 以上 2145 以下) でなければなりません。  

バグ

ずっと昔から、 delta に NULL を指定すると、未完了のクロック調整に関する有効な情報が olddelta に返されないというバグがありました (この場合、 adjtime() は、未完了のクロック調整に関する情報を、変更せずに返すべきです)。このバグは、glibc 2.8 以降で、Linux カーネル 2.6.26 以降のシステムでは修正されています。  

関連項目

adjtimex(2), gettimeofday(2), time(7)


 

Index

名前
ライブラリ
書式
説明
返り値
エラー
属性
標準
履歴
注意
バグ
関連項目

This document was created by man2html, using the manual pages.