<em id="0a85b"><option id="0a85b"></option></em>

<abbr id="0a85b"></abbr>

      <nobr id="0a85b"></nobr>
        <tr id="0a85b"></tr>
        9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
        學習啦 > 學習電腦 > 操作系統 > Linux教程 >

        Linux下用C獲取當前時間命令是什么

        時間: 加城1195 分享

          Linux繼承了Unix以網絡為核心的設計思想,是一個性能穩定的多用戶網絡操作系統。本篇文章主要介紹了Linux獲取當前時間的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

          Linux下用C獲取當前時間,具體如下:

          代碼(可以把clock_gettime換成time(NULL))

          void getNowTime()

          {

          timespec time;

          clock_gettime(CLOCK_REALTIME, &time); //獲取相對于1970到現在的秒數

          tm nowTime;

          localtime_r(&time.tv_sec, &nowtime);

          char current[1024];

          sprintf(current, "%04d%02d%02d%02d:%02d:%02d", nowTime.tm_year + 1900, nowTime.tm_mon, nowTime.tm_mday,

          nowTime.tm_hour, nowTime.tm_min, nowTime.tm_sec);

          }

          分析:

          clock_gettime()

          函數"clock_gettime"是基于Linux C語言的時間函數,他可以用于計算精度和納秒。

          語法:

          #include

          int clock_gettime(clockid_t clk_id,struct timespec *tp);

          參數:

          clk_id : 檢索和設置的clk_id指定的時鐘時間。

          CLOCK_REALTIME:系統實時時間,隨系統實時時間改變而改變,即從UTC1970-1-1 0:0:0開始計時,中間時刻如果系統時間被用戶改成其他,則對應的時間相應改變

          CLOCK_MONOTONIC:從系統啟動這一刻起開始計時,不受系統時間被用戶改變的影響

          CLOCK_PROCESS_CPUTIME_ID:本進程到當前代碼系統CPU花費的時間

          CLOCK_THREAD_CPUTIME_ID:本線程到當前代碼系統CPU花費的時間

          struct timespec

          {

          time_t tv_sec; /* 秒*/

          long tv_nsec; /* 納秒*/

          };

          localtime()

          localtime是 把從1970-1-1零點零分到當前時間系統所偏移的秒數時間轉換為本地時間.

          語法

          說明:此函數獲得的tm結構體的時間是日歷時間。

          用 法: struct tm *localtime(const time_t *clock);

          返回值:返回指向tm 結構體的指針.tm結構體是time.h中定義的用于分別存儲時間的各個量(年月日等)的結構體.

          例1:

          #include

          #include

          #include

          int main(void)

          {

          time_t timer;//time_t就是long int 類型

          struct tm *tblock;

          timer = time(NULL);

          tblock = localtime(&timer);

          printf("Local time is: %s\n", asctime(tblock));

          return 0;

          }

          執行結果:

          Local time is: Mon Feb 16 11:29:26 2009

          例2:

          上面的例子用了asctime函數,下面這個例子不使用這個函數一樣能獲取系統當前時間。需要注意的是年份加上1900,月份加上1。

          #include

          #include

          int main()

          {

          struct tm *t;

          time_t tt;

          time(&tt);

          t = localtime(&tt);

          printf("%4d年%02d月%02d日 %02d:%02d:%02d\n", t->tm_year + 1900, t->tm_mon + 1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec);

          return 0;

          }

          localtime()與localtime_r()的區別

          localtime():

          #include

          #include

          #include

          #include

          using namespace std;

          int main(int argc, char *argv[])

          {

          time_t tNow =time(NULL);

          time_t tEnd = tNow + 1800;

          //注意下面兩行的區別

          struct tm* ptm = localtime(&tNow);

          struct tm* ptmEnd = localtime(&tEnd);

          char szTmp[50] = {0};

          strftime(szTmp,50,"%H:%M:%S",ptm);

          char szEnd[50] = {0};

          strftime(szEnd,50,"%H:%M:%S",ptmEnd);

          printf("%s /n",szTmp);

          printf("%s /n",szEnd);

          system("PAUSE");

          return EXIT_SUCCESS;

          }

          最后出來的結果是:

          21:18:39

          21:18:39

          和最初想法不一致。

          查閱localtime的文檔,發現這段話:

          This structure is statically allocated and shared by the functions gmtime and localtime. Each time either one of these functions is called the content of this structure is overwritten.

          也就是說每次只能同時使用localtime()函數一次,要不就會被重寫!

          The localtime() function need not be reentrant. A function that is not required to be reentrant is not required to be thread-safe.

          因此localtime()不是可重入的。同時libc里提供了一個可重入版的函數localtime_r();

          Unlike localtime(), the reentrant version is not required to set tzname。

          修改程序:(localtime_r())

          #include

          #include

          #include

          #include

          using namespace std;

          int main(int argc, char *argv[])

          {

          time_t tNow =time(NULL);

          time_t tEnd = tNow + 1800;

          //在這里修改程序

          //struct tm* ptm = localtime(&tNow);

          //struct tm* ptmEnd = localtime(&tEnd);

          struct tm ptm = { 0 };

          struct tm ptmEnd = { 0 };

          localtime_r(&tNow, &ptm);

          localtime_r(&tEnd, &ptmEnd);

          char szTmp[50] = {0};

          strftime(szTmp,50,"%H:%M:%S",&ptm);

          char szEnd[50] = {0};

          strftime(szEnd,50,"%H:%M:%S",&ptmEnd);

          printf("%s /n",szTmp);

          printf("%s /n",szEnd);

          system("PAUSE");

          return EXIT_SUCCESS;

          }

          最后出來的結果是:

          10:29:06

          10:59:06

          tm

          struct tm {

          int tm_sec; /* 秒 – 取值區間為[0,59] */

          int tm_min; /* 分 - 取值區間為[0,59] */

          int tm_hour; /* 時 - 取值區間為[0,23] */

          int tm_mday; /* 一個月中的日期 - 取值區間為[1,31] */

          int tm_mon; /* 月份(從一月開始,0代表一月) - 取值區間為[0,11] */

          int tm_year; /* 年份,其值等于實際年份減去1900 */

          int tm_wday; /* 星期 – 取值區間為[0,6],其中0代表星期天,1代表星期一 */

          int tm_yday; /* 從每年1月1日開始的天數– 取值區間[0,365],其中0代表1月1日 */

          int tm_isdst; /* 夏令時標識符,夏令時tm_isdst為正;不實行夏令時tm_isdst為0 */

          };

          time 函數

          返回:1970-1-1, 00:00:00以來經過的秒數

          原型: time_t time(time_t *calptr)

          結果可以通過返回值,也可以通過參數得到,見實例

          頭文件

          返回值:

          成功:秒數,從1970-1-1,00:00:00 可以當成整型輸出或用于其它函數

          失敗:-1

          time_t now;

          time(&now);// 等同于now = time(NULL)

          printf("now time is %d\n", now);

          補充:Linux基本命令

          1.ls命令:

          格式::ls [選項] [目錄或文件]

          功能:對于目錄,列出該目錄下的所有子目錄與文件;對于文件,列出文件名以及其他信息。

          常用選項:

          -a :列出目錄下的所有文件,包括以 . 開頭的隱含文件。

          -d :將目錄像文件一樣顯示,而不是顯示其他文件。

          -i :輸出文件的i節點的索引信息。

          -k :以k字節的形式表示文件的大小。

          -l :列出文件的詳細信息。

          -n :用數字的UID,GID代替名稱。

          -F : 在每個文件名后面附上一個字符以說明該文件的類型,“*”表示可執行的普通文 件;“/”表示目錄;“@”表示符號鏈接;“l”表示FIFOS;“=”表示套接字。

          2.cd命令

          格式:cd [目錄名稱]

          常用選項:

          cd .. 返回上一級目錄。

          cd ../.. 將當前目錄向上移動兩級。

          cd - 返回最近訪問目錄。

          3.pwd命令

          格式: pwd

          功能:顯示出當前工作目錄的絕對路徑。

          相關閱讀:Linux主要特性

          完全兼容POSIX1.0標準

          這使得可以在Linux下通過相應的模擬器運行常見的DOS、Windows的程序。這為用戶從Windows轉到Linux奠定了基礎。許多用戶在考慮使用Linux時,就想到以前在Windows下常見的程序是否能正常運行,這一點就消除了他們的疑慮。

          多用戶、多任務

          Linux支持多用戶,各個用戶對于自己的文件設備有自己特殊的權利,保證了各用戶之間互不影響。多任務則是現在電腦最主要的一個特點,Linux可以使多個程序同時并獨立地運行。

          良好的界面

          Linux同時具有字符界面和圖形界面。在字符界面用戶可以通過鍵盤輸入相應的指令來進行操作。它同時也提供了類似Windows圖形界面的X-Window系統,用戶可以使用鼠標對其進行操作。在X-Window環境中就和在Windows中相似,可以說是一個Linux版的Windows。

          支持多種平臺

          Linux可以運行在多種硬件平臺上,如具有x86、680x0、SPARC、Alpha等處理器的平臺。此外Linux還是一種嵌入式操作系統,可以運行在掌上電腦、機頂盒或游戲機上。2001年1月份發布的Linux 2.4版內核已經能夠完全支持Intel 64位芯片架構。同時Linux也支持多處理器技術。多個處理器同時工作,使系統性能大大提高。


        Linux下用C獲取當前時間相關文章:

        1.linux shell獲取當前時間命令

        2.Linux C語言時間函數

        3.linux查看java進程命令

        4.Linux下如何編寫第一個C語言hello world程序

        5.Linux C語言怎樣使用文本編輯器

        4018918 主站蜘蛛池模板: 亚洲综合视频一区二区三区| 免费人成视频在线| a在线亚洲男人的天堂试看| 四虎亚洲国产成人久久精品| 2021久久最新国产精品| 精品一区二区三区蜜桃久| 亚洲欧美成人一区二区三区| 狠狠色婷婷久久综合频道日韩| 男人猛躁进女人免费播放| 久久免费看少妇免费观看| 国产亚洲精品第一综合| 亚洲啪AV永久无码精品放毛片| 边做边爱完整版免费视频播放| 亚洲av综合aⅴ国产av中文| AV无码不卡一区二区三区| 蜜臀av一区二区三区精品| 国产国拍亚洲精品永久软件| 人妻精品动漫H无码中字| 国偷自产一区二区三区在线视频| 99热精品毛片全部国产无缓冲| 亚洲AV美女在线播放啊| 亚洲最大的熟女水蜜桃AV网站| 久久天堂综合亚洲伊人HD妓女| 偷拍精品一区二区三区| 久久亚洲2019中文字幕| 91无码人妻精品一区| 香蕉久久久久久久av网站| 亚洲一区二区不卡av| 亚洲精品一区二区三区蜜| 亚洲国产精品一二三区| 人妻系列中文字幕精品| 欧美亚洲综合成人a∨在线| 羞羞色男人的天堂| 最新国产色视频在线播放| 亚洲日韩国产精品第一页一区 | 激情亚洲专区一区二区三区| 欧美日本激情| 欧美人与动牲交精品| 我要看亚洲黄色太黄一级黄| 中文字幕av国产精品| 久久SE精品一区精品二区|