Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 91热精品视频,日韩一区二区视频,亚洲男男视频

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          C語言時間函數(4)之Linux下設置時間的函數stime()和settimeofday()

          標準C庫中只有獲取系統時間的API,好像還沒有設置系統時間的API,本文將談談如何在linux平臺設置系統時間,最后給出一個與平臺無關的設置系統時間的封閉函數。

          linux是如何管理時間的?

          在系統啟動時,Linux操作系統將時間從CMOS中讀到系統時間變量中,以后修改時間通過修改系統時間實現。為了保持系統時間與CMOS時間的一致性,Linux每隔11分鐘會將系統時間寫入CMOS,同步時間。從這可以看出,獲取系統時間有兩個途徑,一種是從CMOS中讀,一種是從系統中讀,但修改時間卻只有一種,即修改linux系統中的時間,而修改CMOS中的時間是無效的,因為CMOS中的時間會被定時重寫掉。另外還有一點要注意,修改了系統時間并不是馬上生效的,假如你修改了系統時間并馬上關機,再開機的時候,時間還是原來的,因為修改的時間還沒有來得及寫入CMOS中。

          Linux下設置系統時間:

          1.Linux下設置系統時間的函數有好幾個,先來看看最常用的stime()函數,這個函數只能精確到秒。

          #define /*如果你使用的是glib2的話,必須先定義這個宏才能使用*/

          #include

          int stime(time_t *t);

          參數說明:

          t是以秒為單位的時間值,從GMT1970年1月1日0時0分0秒開始計算。

          返回值:

          成功返回0,錯誤返回-1,errno錯誤碼,EFAULT表示傳遞的參數錯誤,如時間值是無效的值,EPERM表示權限不夠,注意只有root用戶才有修改系統時間的權限。如果要讓普通程序修改系統時間,可以先切換到root用戶操作,修改完成后,再切換到普通用戶,或者用命令chmod +s給執行文件加上root用戶的權限。

          例子:

          int main(void)
          {
                  long int t = 111111111;
                  printf("設置系統時間前的時間是:");
                  fflush(stdout);
                  system("date");
                  stime(&t);
                  printf("設置系統時間后的時間是:");
                  fflush(stdout);
                  system("date");
                  return 0;
          }

          
          
          

          2.通過()函數來設置系統時間,這個函數設置的精度可以精確到微秒。

          #include

          linux顯示時間到秒_linux系統時間時間秒數_linux秒數轉為時間

          int (const struct timeval *tv , const struct *tz);

          struct timeval {

          time_t tv_sec; /* seconds */

          tv_usec; /* */

          };

          struct {

          int ; /* minutes west of */

          int ; /* type of DST */

          };

          tz參數為時區,時區結構中在linux中不支持,應該置為0,通常將參數tz設置為NULL,表示使用當前系統的時區。該函數是glib中的,但在mingw中沒有實現。

          舉例:

           1 #include 
            2 #include 
            3 #include 
            4 
            5 int main(void)
            6 {
            7         struct timeval stime;
            8 
            9         gettimeofday(&stime,NULL);
           10         printf("現在的時間秒數是:%ld,毫秒數是:%ld\n現在的時間是:",stime.tv_sec,stime.tv_usec);
           11         fflush(stdout);
           12         system("date");
           13 
           14         stime.tv_sec = 123456789;
           15         settimeofday(&stime,NULL);
           16         printf("現在的時間秒數是:%ld,毫秒數是:%ld\n現在的時間是:",stime.tv_sec,stime.tv_usec);
           17         fflush(stdout);
           18         system("date");
           19 
           20 
           21 
           22         return 0;
           23 }
          

          結果:

          linux顯示時間到秒_linux系統時間時間秒數_linux秒數轉為時間

          3.設置CMOS時間,其實它是通過RTC(Real-time clock)設備驅動來完成的,你可以用ioctl()函數來設置時間,當然也可以通過操作/dev/rtc設備文件,在此就不詳細說明了。

          二、一個封裝的設置系統時間的函數

          //設置成功返回true,否則返回false

          bool (struct tm& t)

          #ifdef _WIN32

          st;

          memset(&st, 0, sizeof());

          st.wYear = t.tm_year + 1970; //注意struct tm結構中的年是從1970年開始的計數

          st.wMonth = t.tm_mon + 1; //注意struct tm結構中的月份是從0開始的

          st.wDay = t.tm_mday;

          st.wHour = t.tm_hour;

          st.wMinute = t.tm_min;

          st.wSecond = t.tm_sec;

          if(!(&st))

          return true;

          else

          return false;

          #else

          //將struct tm結構時間轉換成GMT時間time_t

          struct time_t st;

          st = mktime(&t);

          if(st==-1)

          return false;

          if(!stime(st))

          return true;

          else

          return false;

          #endif


          主站蜘蛛池模板: 一区精品麻豆入口| 国产一区二区三区久久精品| 亚洲AV日韩AV一区二区三曲| 中文字幕视频一区| 国产在线一区二区杨幂| 亚洲美女视频一区| 亚洲av鲁丝一区二区三区 | 北岛玲在线一区二区| 射精专区一区二区朝鲜| 久久久久久免费一区二区三区| 日本免费一区二区三区最新| 亚洲乱码一区av春药高潮| 一区二区在线免费视频| 国产乱码精品一区二区三区四川| 另类国产精品一区二区| 日韩精品免费一区二区三区| 国产一区二区三区在线看片 | 亚洲欧洲一区二区三区| 午夜视频久久久久一区 | 制服丝袜一区二区三区| 国产一区二区三区在线视頻| 国产精品成人一区二区| 五十路熟女人妻一区二区| 蜜臀Av午夜一区二区三区| 韩国福利影视一区二区三区| 亚洲一区二区三区高清不卡| 亚洲日韩一区二区一无码| 国产精品一区二区毛卡片| 一区二区亚洲精品精华液| 亚洲日韩国产一区二区三区在线| 无码精品不卡一区二区三区| 国产一区二区三区在线看片| 国产成人无码AV一区二区| 精品一区二区三区在线观看视频| 日韩爆乳一区二区无码| 亚洲国产精品一区二区久久hs| 国产精品久久久久久麻豆一区| 色屁屁一区二区三区视频国产| 久久综合精品国产一区二区三区| 亚洲V无码一区二区三区四区观看| 日韩精品一区二区三区老鸭窝|