日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux调用一个函数失败 打印错误,linux下settimeofday函数调用失败,何故?解决办法...

發(fā)布時(shí)間:2025/3/15 linux 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux调用一个函数失败 打印错误,linux下settimeofday函数调用失败,何故?解决办法... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

當(dāng)前位置:我的異常網(wǎng)? C語言???linux下settimeofday函數(shù)調(diào)用失敗,何故?解決辦法

linux下settimeofday函數(shù)調(diào)用失敗,何故?解決辦法

www.myexceptions.net??網(wǎng)友分享于:2014-11-29??瀏覽:0次

linux下settimeofday函數(shù)調(diào)用失敗,何故?

GCC成功,可以運(yùn)行,但就是該函數(shù)調(diào)用失敗,返回值-1;

我用ROOT帳號(hào)GCC,再執(zhí)行,也是這樣。

--------------------------------------------------------------

#include???

#include

#include

#include

#include?"stdlib.h"

int???main(void)

{

struct?????tm???*t_tm;

struct?timeval?t_timeval;

time_t?t_timet;

t_timet=time(NULL);

t_tm=localtime(&t_timet);

printf("\n\ncurrent?system??UTC?time:%s\n",?asctime(t_tm));

t_tm->tm_hour=18;

t_tm->tm_min=18;

t_tm->tm_sec=18;

t_tm->tm_year=18;

t_tm->tm_mon=5;?//月份(從一月開始,0代表一月)?-?取值區(qū)間為[0,11]

t_tm->tm_mday=18;??//年份,其值從1900開始

t_timet=mktime(t_tm);

t_timeval.tv_sec=t_timet;

t_timeval.tv_usec=0;

int?rec?=?settimeofday(&t_timeval,NULL);

printf("modifyed??time:%s\nsettime?return?code:%d\n\n",?asctime(t_tm),rec);

//printf("local?time:%s\n",?ctime(&tvt));

return???0;

}

------解決思路----------------------

檢查下errno。

------解決思路----------------------

單步調(diào)試看看?t_timet和rec的值。

------解決思路----------------------

GETTIMEOFDAY

Section:?Linux?Programmer's?Manual?(2)

Updated:?2004-05-27

--------------------------------------------------------------------------------

NAME

gettimeofday,?settimeofday?-?get?/?set?time

SYNOPSIS

#include?

int?gettimeofday(struct?timeval?*tv,?struct?timezone?*tz);

int?settimeofday(const?struct?timeval?*tv?,?const?struct?timezone?*tz);

DESCRIPTION

The?functions?gettimeofday?and?settimeofday?can?get?and?set?the?time?as?well?as?a?timezone.?The?tv?argument?is?a?timeval?struct,?as?specified?in?:

struct?timeval?{

time_t??????????tv_sec;?????????/*?seconds?*/

suseconds_t?????tv_usec;????????/*?microseconds?*/

};

and?gives?the?number?of?seconds?and?microseconds?since?the?Epoch?(see?time(2)).?The?tz?argument?is?a?timezone?:

struct?timezone?{

int?????tz_minuteswest;?/*?minutes?W?of?Greenwich?*/

int?????tz_dsttime;?????/*?type?of?dst?correction?*/

};

The?use?of?the?timezone?struct?is?obsolete;?the?tz_dsttime?field?has?never?been?used?under?Linux?-?it?has?not?been?and?will?not?be?supported?by?libc?or?glibc.?Each?and?every?occurrence?of?this?field?in?the?kernel?source?(other?than?the?declaration)?is?a?bug.?Thus,?the?following?is?purely?of?historic?interest.

The?field?tz_dsttime?contains?a?symbolic?constant?(values?are?given?below)?that?indicates?in?which?part?of?the?year?Daylight?Saving?Time?is?in?force.?(Note:?its?value?is?constant?throughout?the?year?-?it?does?not?indicate?that?DST?is?in?force,?it?just?selects?an?algorithm.)?The?daylight?saving?time?algorithms?defined?are?as?follows?:

DST_NONE?????/*?not?on?dst?*/

DST_USA?????/*?USA?style?dst?*/

DST_AUST????/*?Australian?style?dst?*/

DST_WET?????/*?Western?European?dst?*/

DST_MET?????/*?Middle?European?dst?*/

DST_EET?????/*?Eastern?European?dst?*/

DST_CAN?????/*?Canada?*/

DST_GB??????/*?Great?Britain?and?Eire?*/

DST_RUM?????/*?Rumania?*/

DST_TUR?????/*?Turkey?*/

DST_AUSTALT?/*?Australian?style?with?shift?in?1986?*/

Of?course?it?turned?out?that?the?period?in?which?Daylight?Saving?Time?is?in?force?cannot?be?given?by?a?simple?algorithm,?one?per?country;?indeed,?this?period?is?determined?by?unpredictable?political?decisions.?So?this?method?of?representing?time?zones?has?been?abandoned.?Under?Linux,?in?a?call?to?settimeofday?the?tz_dsttime?field?should?be?zero.

Under?Linux?there?is?some?peculiar?`warp?clock'?semantics?associated?to?the?settimeofday?system?call?if?on?the?very?first?call?(after?booting)?that?has?a?non-NULL?tz?argument,?the?tv?argument?is?NULL?and?the?tz_minuteswest?field?is?nonzero.?In?such?a?case?it?is?assumed?that?the?CMOS?clock?is?on?local?time,?and?that?it?has?to?be?incremented?by?this?amount?to?get?UTC?system?time.?No?doubt?it?is?a?bad?idea?to?use?this?feature.

The?following?macros?are?defined?to?operate?on?a?struct?timeval?:

#define???????timerisset(tvp)\

((tvp)->tv_sec

------解決思路----------------------

(tvp)->tv_usec)

#define???????timercmp(tvp,?uvp,?cmp)\

((tvp)->tv_sec?cmp?(uvp)->tv_sec

------解決思路----------------------

\

(tvp)->tv_sec?==?(uvp)->tv_sec?&&\

(tvp)->tv_usec?cmp?(uvp)->tv_usec)

#define???????timerclear(tvp)\

((tvp)->tv_sec?=?(tvp)->tv_usec?=?0)

If?either?tv?or?tz?is?null,?the?corresponding?structure?is?not?set?or?returned.

Only?the?super?user?may?use?settimeofday.

RETURN?VALUE

gettimeofday?and?settimeofday?return?0?for?success,?or?-1?for?failure?(in?which?case?errno?is?set?appropriately).

ERRORS

EFAULT

One?of?tv?or?tz?pointed?outside?the?accessible?address?space.

EINVAL

Timezone?(or?something?else)?is?invalid.

EPERM

The?calling?process?has?insufficient?privilege?to?call?settimeofday;?under?Linux?the?CAP_SYS_TIME?capability?is?required.

NOTE

The?prototype?for?settimeofday?and?the?defines?for?timercmp,?timerisset,?timerclear,?timeradd,?timersub?are?(since?glibc2.2.2)?only?available?if?_BSD_SOURCE?is?defined?(either?explicitly,?or?implicitly,?by?not?defining?_POSIX_SOURCE?or?compiling?with?the?-ansi?flag).

Traditionally,?the?fields?of?struct?timeval?were?longs.

CONFORMING?TO

SVr4,?BSD?4.3.?POSIX?1003.1-2001?describes?gettimeofday()?but?not?settimeofday().

SEE?ALSO

date(1),?adjtimex(2),?time(2),?ctime(3),?ftime(3),?capabilities(7)

--------------------------------------------------------------------------------

文章評(píng)論

總結(jié)

以上是生活随笔為你收集整理的linux调用一个函数失败 打印错误,linux下settimeofday函数调用失败,何故?解决办法...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。