導航:首頁 > 編程系統 > linuxc記時

linuxc記時

發布時間:2024-03-01 04:52:35

A. 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類型變數。

B. linux下c++的clock統計時間怎麼不準

linux下c++的clock統計時間怎麼不準
計時,也就是獲取當前的時間,使用 gettimeofday(),精度 1 毫秒。x86_64 ...

C語言中如何計算時間差 : C語言中如何計算時間差 如何將兩個包含「年月...2)關於sleep中的數,在Windows和Li...

linux下如何查卡cpu的頻率 : clock -w 將時間修改保存到 BIOS 關機(系統的...chattr +c file1 允許...

請問C語言中clock()函數該怎麼用? : 這表示硬體滴答1000下是1秒,因此要計算一個進程的時間,用clock()除以1000...之類的是...

LINUX下C語言編程怎麼列印日誌 : LINUX下C語言編程怎麼列印日誌 linux編程C語言 ...time_t clock ; ap...

Linux 怎麼修改系統和文件的創建時間和最後修改時間 : date-s05/06/2016修改年月日為2016年5月6日,date-s09:30:00設置系統...

for語句延時時間計算方法 : clock如果不夠精確,linux下可以用gettimeofday,windows下用GetSysT...

linux 如何獲取ntp伺服器時間 : 「Synchronize system clock before startingservice」,...

linux c clock函數持續時間一直為0; : clock_t clock (void) 解釋為This function returns the ...

C. 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

D. 如何在c語言程序中插入一個倒計時命令

C語言中提供了許多庫函數來實現計時功能,下面是一些常用的計時函數:
1、 time()
頭文件:time.h
函數原型:time_t time(time_t * timer)
功能:返回以格林尼治時間(GMT)為標准,從1970年1月1日00:00:00到現在的時此刻所經過的秒數
用time()函數結合其他函數(如:localtime、gmtime、asctime、ctime)可以獲得當前系統時間或是標准時間。
用difftime函數可以計算兩個time_t類型的時間的差值,可以用於計時。用difftime(t2,t1)要比t2-t1更准確,因為C標准中並沒有規定time_t的單位一定是秒,而difftime會根據機器進行轉換,更可靠。
說明:C標准庫中的函數,可移植性最好,性能也很穩定,但精度太低,只能精確到秒,對於一般的事件計時還算夠用,而對運算時間的計時就明顯不夠用了。

2、clock()
頭文件:time.h
函數原型:clock_t clock(void);
功能:該函數返回值是硬體滴答數,要換算成秒,需要除以CLK_TCK或者 CLK_TCKCLOCKS_PER_SEC。比如,在VC++6.0下,這兩個量的值都是1000。

說明:可以精確到毫秒,適合一般場合的使用。
3.、timeGetTime()
頭文件:Mmsystem.h 引用庫: Winmm.lib
函數原型:DWORD timeGetTime(VOID);
功能:返回系統時間,以毫秒為單位。系統時間是從系統啟動到調用函數時所經過的毫秒數。注意,這個值是32位的,會在0到2^32之間循環,約49.71天。
說明:該函數的時間精度是五毫秒或更大一些,這取決於機器的性能。可用timeBeginPeriod和timeEndPeriod函數提高timeGetTime函數的精度。如果使用了,連續調用timeGetTime函數,一系列返回值的差異由timeBeginPeriod和timeEndPeriod決定。

4、GetTickCount()
頭文件:windows.h
函數原型:DWORD WINAPI GetTickCount(void);
功能:返回自設備啟動後的毫秒數(不含系統暫停時間)。
說明:精確到毫秒。對於一般的實時控制,使用GetTickCount()函數就可以滿足精度要求。

5、QueryPerformanceCounter()、QueryPerformanceFrequency()
頭文件:windows.h
函數原型:BOOLQueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount);
BOOLQueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);
功能:前者獲得的是CPU從開機以來執行的時鍾周期數。後者用於獲得你的機器一秒鍾執行多少次,就是你的時鍾周期。
補充:LARGE_INTEGER既可以是一個8位元組長的整型數,也可以是兩個4位元組長的整型數的聯合結構, 其具體用法根據編譯器是否支持64位而定:
在進行定時之前,先調用QueryPerformanceFrequency()函數獲得機器內部定時器的時鍾頻率,然後在需要嚴格定時的事件發生之前和發生之後分別調用QueryPerformanceCounter()函數,利用兩次獲得的計數之差及時鍾頻率,計算出事件經歷的精確時間。
說明:這種方法的定時誤差不超過1微秒,精度與CPU等機器配置有關,一般認為精度為透微秒級。在Windows平台下進行高精度計時的時候可以考慮這種方法。

6、gettimeofday()
Linux C函數。
頭文件:sys/time.h
函數原型:int gettimeofday(struct timeval *tv,struct timezone *tz);
說明:其參數tv是保存獲取時間結果的結構體,參數tz用於保存時區結果(若不使用則傳入NULL即可)。
timeval的定義為:
struct timeval {
long tv_sec; // 秒數
long tv_usec; //微秒數
}

E. 在linux環境下c語言中如何讓while循環執行固定的時間如200毫秒

...
樓上的想讓你的程序變成悲劇...linux下sleep函數的參數是秒為單位的...休眠200秒...
睡眠小於1秒用usleep,單位是毫秒...

所以,樓上的程序把sleep改成usleep就可以 了...
while(1)
{
/* any thing you want to do*/
usleep(200);
}

另外我覺得你要說的好像是:希望while循環執行某些操作,執行時間到200毫秒之後退出while循環?
最簡單是用間隔定時器...
你查下這幾個函數:timer_create,timer_settime等。

時間設置比較精確,可以設置一段時間間隔,過了指定的時間之後,會給當前進程發送一個SIGALRM信號,你while循環的條件,可以在SIGALRM的信號處理函數裡面修改,這樣,到時間之後while就可以退出了....

這樣寫:
//...
...
...
static char flag=1
...
int main(void)
{
signal(SIGALRM, timer_handler);
/*
申請並且設置間隔定時器的間隔
*/

while(flag)
{
/*循環內的操作*/
}

...

return 0;
}

void timer_handler(unsigned int signal)
{
flag=0;
}

F. Linux編程itimerval計時器結構體問題

樓主的程序沒有用 signal 注冊 SIGPROC 對應函數,在 for 循環的時候可能已經發生了多次中斷和重置計時器。至於比1秒大,手冊中有解釋 Timers will never expire before the requested time, but may expire some (short) time afterward, which depends on the system timer resolution and on the system load; see time(7).


要在1秒間隔調用一個函數,需要加上 signal,比如

#include<signal.h>
#include<sys/time.h>
#include<stdio.h>
#include<time.h>

staticstructitimervala;

voidtimeover(intevent)
{
structitimervalb;
printf("timeoverat%ld ",time(NULL));
getitimer(ITIMER_PROF,&b);
printf("sec=%ld,usec=%ld ",b.it_value.tv_sec,b.it_value.tv_usec);
}

intmain()
{
signal(SIGPROF,timeover);

printf("beginat%ld ",time(NULL));

a.it_interval.tv_sec=1;
a.it_interval.tv_usec=0;
a.it_value.tv_sec=1;
a.it_value.tv_usec=0;

setitimer(ITIMER_PROF,&a,NULL);

while(1);

return0;
}

G. linux下c++的clock統計時間怎麼不準

1) 計時,也就是獲取當前的時間,使用 gettimeofday(),精度 1 毫秒。x86_64 下是用戶態實現,無上下文切換且不陷入內核,效率非常高。
clock_gettime() 精度可到納秒,但需要陷入內核,效率較低。
2) 定時,使用 timerfd_create() / timerfd_gettime() / timerfd_settime()。實現確保不使用 SIGALRM 信號,避免沖突和多線程問題。精度可到納秒。
具體設置方法可以看linuxprobe. c o m 希望對你有幫助

H. C語言的clock()測出來的是什麼時間

clock函數返回的是cpu時間,並不是秒數,真正的一秒鍾可能包含若干個CPU時間,這個值通常是由宏CLOCKS_PER_SEC來定義,表示一秒中有CLOCKS_PER_SEC這么多個cpu時間,不同的編譯器可能不同,比如,linux C中,它是1000000,在VC6中,它是1000,你用cost除以CLOCKS_PER_SEC即可得到實際的秒數。

附linux下clock函數說明:

在單獨的窗口中打開圖片可以看得更清楚一些,注意紅線部分說明:要計算秒數,除以CLOCKS_PER_SEC

閱讀全文

與linuxc記時相關的資料

熱點內容
文件夾優酷中緩存的視頻找不到 瀏覽:685
成都騰進網路技術有限公司 瀏覽:549
電腦保存文件怎麼發到qq 瀏覽:556
寶寶文件夾圖片 瀏覽:516
蘋果電腦如何剪切文件夾 瀏覽:183
蘋果電腦怎麼拷貝excel文件 瀏覽:260
cf狙擊準星工具 瀏覽:27
西門子數控編程r11r25是什麼意思 瀏覽:574
iphone6怎麼刪除聯系人 瀏覽:643
ipad4刷安卓系統 瀏覽:463
linuxgrep失效 瀏覽:519
word文件大於100m怎麼變小 瀏覽:898
靖江二手文件櫃哪裡買 瀏覽:478
cad如何傳輸全站儀數據 瀏覽:642
如何破壞所有的excel文件 瀏覽:766
數據大屏壁紙哪裡可以找到 瀏覽:235
融學大數據APP 瀏覽:938
win10共享不了文件夾許可權訪問 瀏覽:808
qq頭像可愛卡通超萌 瀏覽:804
院內文件具體有哪些 瀏覽:337

友情鏈接