C說話中settimeofday函數和gettimeofday函數的應用。本站提示廣大學習愛好者:(C說話中settimeofday函數和gettimeofday函數的應用)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話中settimeofday函數和gettimeofday函數的應用正文
C說話settimeofday()函數:設置以後時光戳
頭文件:
#include <sys/time.h> #include <unistd.h>
界說函數:
int settimeofday(const struct timeval *tv, const struct timezone *tz);
函數解釋:settimeofday()會把今朝時光設成由tv 所指的構造信息,本地時區信息則設成tz 所指的構造。具體的解釋請參考gettimeofday()。
留意,在Linux下,只要root 權限能力應用此函數修正時光。
前往值:勝利則前往0,掉敗前往-1,毛病代碼存於errno。
毛病代碼:
EPERM 並不是由root 權限挪用settimeofday(),權限不敷。
EINVAL 時區或某個數據是不准確的,沒法准確設置時光。
C說話gettimeofday()函數:獲得以後時光
頭文件:
#include <sys/time.h> #include <unistd.h>
界說函數:int gettimeofday (struct timeval * tv, struct timezone * tz);
函數解釋:gettimeofday()會把今朝的時光有tv 所指的構造前往,本地時區的信息則放到tz 所指的構造中。
timeval 構造界說為:
struct timeval{ long tv_sec; //秒 long tv_usec; //微秒 };
timezone 構造界說為:
struct timezone { int tz_minuteswest; //和Greenwich 時光差了若干分鐘 int tz_dsttime; //日光勤儉時光的狀況 };
上述兩個構造都界說在/usr/include/sys/time.h. tz_dsttime 所代表的狀況以下
DST_NONE //不應用 DST_USA //美國 DST_AUST //澳洲 DST_WET //西歐 DST_MET //中歐 DST_EET //東歐 DST_CAN //加拿年夜 DST_GB //年夜不列顛 DST_RUM //羅馬尼亞 DST_TUR //土耳其 DST_AUSTALT //澳洲(1986 年今後)
前往值:勝利則前往0,掉敗前往-1,毛病代碼存於errno。
附加解釋:EFAULT 指針tv 和tz 所指的內存空間超越存取權限。
典范
#include <sys/time.h> #include <unistd.h> main(){ struct timeval tv; struct timezone tz; gettimeofday (&tv, &tz); printf("tv_sec; %d\n", tv.tv_sec); printf("tv_usec; %d\n", tv.tv_usec); printf("tz_minuteswest; %d\n", tz.tz_minuteswest); printf("tz_dsttime, %d\n", tz.tz_dsttime); }
履行成果:
tv_sec: 974857339 tv_usec:136996 tz_minuteswest:-540 tz_dsttime:0