Ⅰ gettimeofday()鍜宼ime()鐨勫尯鍒
UNIX鍙奓inux鐨勬椂闂寸郴緇熸槸鐢便屾柊綰鍏冩椂闂淬岴poch寮濮嬭$畻璧鳳紝鍗曚綅涓虹掋侲poch鏄鎸囧畾涓1970騫1鏈1鏃ュ噷鏅ㄩ浂鐐歸浂鍒嗛浂縐掞紝鏍兼灄濞佹不鏃墮棿銆傜洰鍓嶅ぇ閮ㄤ喚鐨刄NIX緋葷粺閮芥槸鐢32浣嶆潵璁板綍鏃墮棿錛屾e艱〃紺轟負1970浠ュ悗錛岃礋鍊煎垯琛ㄧず1970騫翠互鍓嶃備笅闈㈢湅涓媡ime.h涓鐨則ime鍑芥暟錛宻ys/time.h涓鐨刧ettimeofday鍑芥暟#include<time.h>
#include<sys/time.h>
#include<stdio.h>int main(){
time_t tt;
struct timeval tv;
tt=time(NULL);
gettimeofday(&tv,NULL);
printf("time_t sec is %d\n",tt);
printf("gettimeofday tv_sec is %d, usec is %d \n",tv.tv_sec,tv.tv_usec);
}PS: time 涓 gettimeofday 涓や釜鍑芥暟寰楀埌鐨勯兘鏄浠嶦poch寮濮嬪埌褰撳墠鐨勭掓暟(tt=tv.tv_sec)錛岃屽悗鑰呰繕鑳藉緱鍒版洿綺劇粏鐨勫井縐掔駭緇撴灉錛屽嵆tv_sec*(10^6)+tv_usec涓轟粠Epoch寮濮嬪埌褰撳墠鐨勫井縐掓暟
Ⅱ linux c++ 如何獲取 系統時間
用cstlib函數time,比如
#include <iostream>
#include <cstlib>
using namespace std;
int main()
{
int t, h, m, s;
t = time( 0 );
t = t % 86400;
s = t % 60;
t = ( t - s ) / 60;
m = t % 60;
t = ( t - m ) / 60;
h = t;
cout << "現在是" << h << ":" << m << ":" << s << endl;
return 0;
}
即可顯示
Ⅲ linux time函數出現段錯誤
你可以這樣聲明,time_t *a=NULL,或者這樣time_t a; time_now=time(&a); 第二種取的是a的時間,如果沒有賦值,可能是個錯的時間。
Ⅳ linux常用命令time怎麼使用
Linux中time命令,我們經常用來計算某個程序的運行耗時(real),用戶態cpu耗時(user),系統態cpu耗時(sys)
time命令最常用的使用方式就是在其後面直接跟上命令和參數:
time <command> [<arguments...>]
舉個栗子1:
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ time sleep 2
real 0m2.005s
user 0m0.001s
sys 0m0.002s
小解其意:
real 0m2.005s :sleep這個程序運行耗時為0m2.005s
user 0m0.001s : 這個時間代表的是sleep運行在用戶態的cpu時間
sys 0m0.002s : 這個時間代表的是sleep運行在核心態的cpu時間。
用戶態(User Mode):
在用戶態,代碼不具備直接訪問硬體或者訪問內存的能力,而必須藉助操作系統提供的可靠的,底層的APIs來訪問硬體或者內存。由於這種隔離帶來的保護作用,用戶態的代碼崩潰(Crash),系統是可以恢復的。我們大多數的代碼都是運行在用戶態的。
核心態(Kernel Mode):
在內核態,代碼擁有完全的,不受任何限制的訪問底層硬體的能力。可以執行任意的CPU指令,訪問任意的內存地址。內核態通常情況下,都是為那些最底層的,由操作系統提供的,可信可靠的代碼來運行的。內核態的代碼崩潰將是災難性的,它會影響到整個系統。
為什麼要區分Kernel Mode 和 User Mode:
隔離保護,使得系統更穩定。
好,講完用戶態和核心態之後,我們來看user time,說過了,這個指的是程序foo運行在用戶態的cpu時間,cpu時間不是牆上的鍾走過的時間,而是指CPU工作時間。
舉個栗子2:
#time -p 不顯示單位
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ time -p sleep 2
real 2.00
user 0.00
sys 0.00
Ⅳ Linux下C語言獲得系統時間的方法
沒有完整程序, 不過能提供一點資料
int gettimeofday(struct timeval * tv,struct timezone *tz);
這個函數可以獲取當前時間, 貌似只要第一個結構體就行了
struct timeval
{
time_t tv_sec; //秒 [long int]
suseconds_t tv_usec; //微秒 [long int], (10E-6 second)
};
struct timeval
{
long tv_sec;
long tv_usec;
};
然後取微秒的前三位就是小數了, 之後把秒 tv_sec 轉化為 tm 格式, 參數用秒的指針就行
struct tm * gmtime(const time_t * t);
//轉換成格林威治時間。有時稱為GMT或UTC。
struct tm * localtime(const time_t *t);
//轉換成本地時間。它可以透過修改TZ環境變數來在一台機器中,不同使用者表示不同時間.
下面是tm的部分參數
int tm_sec; //tm_sec表「秒」數,在[0,61]之間,多出來的兩秒是用來處理跳秒問題用的。/* Seconds: 0-59 (K&R says 0-61?) */
int tm_min; //tm_min表「分」數,在[0,59]之間。
int tm_hour; //tm_hour表「時」數,在[0,23]之間。
int tm_mday; //tm_mday表「本月第幾日」,在[1,31]之間。
int tm_mon; //tm_mon表「本年第幾月」,在[0,11]之間。
int tm_year; //tm_year要加1900表示那一年。 /* /* 年份,其值從1900開始 */*/
int tm_wday; //tm_wday表「本周第幾日」,在[0,6]之間。 /* Days since Sunday (0-6) */ /*其中0代表星期天,1代表星期一,以此類推 */
int tm_yday; //tm_yday表「本年第幾日」,在[0,365]之間,閏年有366日。 /*其中0代表1月1日,1代表1月2日,以此類推 */*/
int tm_isdst; //tm_isdst表是否為「日光節約時間」
------------------------------華麗麗的分割線--------------------------------------------------
由於很長時間沒編程了, 也沒有Linux環境, 我就簡單寫幾行代碼, 僅作參考
#include <stdio.h>
#include <time.h>
#include <sys/time.h>
#include<unistd.h>
//這四個不一定夠用了
struct timeval tv;
struct timezone tz;
struct tm * p_tm;
//變數沒有初始化習慣不好,不要學
gettimeofday(&tv, &tz);
p_tm = gmtime( (const time_t *)&tv.tv_sec );
字元串的組裝尤其格式問題自己解決吧
年 p_tm->tm_year+ 1900
月 p_tm->tm_mon+ 1
日 p_tm->tm_mday
時 p_tm->tm_hour+ 1
分 p_tm->tm_min+ 1
秒 p_tm->tm_sec+ 1
小數點後面的部分,注意不夠三位還是前面填充0 tv.tv_sec/1000
Ⅵ linux怎麼用c獲取當前時間
Linux C編程獲取當前時間用time這個函數,time函數會返回一個time_t類型的時間戳(這個time_t類型實際上是一個長整型,定義在time.h頭文件中)。time函數的函數原型是這樣的:
time_t time(time_t *tloc);
使用time函數需要包含time.h頭文件:
#include <time.h>
調用time函數的代碼是這樣的:
time_t t;
t=time((time_t *) 0);
因為time函數參數的作用和返回值一樣,只是用於接收時間戳,所以這里調用time函數可以傳入一個空指針,表示只用它的返回值,不用指針參數來接收時間戳。
因為time函數只是返回一個時間戳,如果想列印直觀的時間信息,可以把剛才的time_t作為參數調用ctime函數,ctime函數會返回一個字元串,ctime函數的調用是這樣的:
printf("The time and date is: %s", ctime(&t));
t就是剛才調用time函數返回的time_t類型變數。
Ⅶ Linux系統命令time給出的用戶時間,系統時間,實際時間分別是什麼含義
用戶CPU時間(user CPU time): 命令執行完成花費的用戶CPU時間,即命令在用戶態中執行時間總和;
實際時間(real time): 從command命令行開始執行到運行終止的消逝時間;
系統CPU時間(system CPU time): 命令執行完成花費的系統CPU時間,即命令在核心態中執行時間總和。
Linux命令的使用時linux運維中的核心基礎,因此你需要知道常見的命令的功能選項,這樣你才能夠更好的處理遇到的問題。關於Linux命令學習這塊,你學習劉遄老師的書籍《linux就該這么學》,相信你會把linux命令掌握得非常的透徹。