#include "stdio.h"
#include "stdlib.h"
#include "time.h"
int main( void )
{
long i = 10000000L;
clock_t start, finish;
double ration;
start = clock();
while( i-- );
finish = clock();
ration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "程序運行 %f 秒\n", ration );
}
B. 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
C. 在linux下,對比兩個文件的時間,哪個更新,用c寫個吧。例如,文件A的mtime是19901220122222 精確到秒。
時間通過一個約定的類型time_t處理,這是一個大到可以容納以秒計算日期和時間的整數類型。在linux系統中,它是一個長整形,即使是32位長整型,也可以用到2038年。到那時我們希望使用64位的系統解決這個問題。
不知道你到底要問什麼問題,是比較兩個文件最後修改時間,還是計算一個文件最後修改時間到「現在」的秒數。下面給出比較兩個文件時間的代碼:
#include<stdio.h>
#include<stdlib.h>
#include<sys/stat.h>
int main(int argc,char *argv[])
{
if(argc!=3)
{
fprintf(stderr,"usage: %s <filepath> <filepath>\n",argv[0]);
exit(1);
}
struct stat buf1;
struct stat buf2;
if(lstat(argv[1],&buf1)<0 || lstat(argv[2],&buf2)<0)
{
perror("lstat error");
exit(2);
}
/* print time */
printf("%s: %ld %s: %ld\n",argv[1],buf1.st_mtime,argv[2],buf2.st_mtime);
/* print time difference */
printf("%ld\n",buf1.st_mtime-buf2.st_mtime);
return 0;
}
D. linux c如何實現時間間隔事件
1)阻塞式時間間隔,
...
sleep( interval ) //其中變數interval是秒的數量。
//do another thing
2)非阻塞式,
time_t tStart = time(NULL);
...
...
...
if( time(NULL)-tStart >interval )
{
//do another thing
tStart = time(NULL);
}
...
E. linux下c/c++時間處理函數asctime()
輸出語句位置錯了。
你算出時間就輸出。
就同 a=1;a=2; 一樣,a變2後輸出,當然是2。
========
time(&t);
puts(ctime(&t)); // 輸出 當地時間
p=gmtime(&t); // 計算 UTC 時間
puts(asctime(p)); // 按 ASCII 輸出 UTC 時間
puts(asctime(localtime ( &t))); // 按 ASCII 輸出 當地 時間
F. 用linux C實現當前系統時間後移24小時以後的時間(14位,精確到秒)
#include <stdio.h>
#include <time.h>
int main(void)
{
time_t tnow;
struct tm *tmnow = NULL;
struct tm *tm24h = NULL;
time(&tnow);
tmnow = localtime(&tnow);//當前時間
fprintf(stderr,"當前時間為:%d年%02d月%02d日,%02d時%02d分%02d秒\n",
tmnow->tm_year+1900,tmnow->tm_mon,tmnow->tm_mday,
tmnow->tm_hour,tmnow->tm_min,tmnow->tm_sec);
tnow += 24*60*60;
tm24h = localtime(&tnow);
fprintf(stderr,"24H後時間為:%d年%02d月%02d日,%02d時%02d分%02d秒\n",
tm24h->tm_year+1900,tm24h->tm_mon,tm24h->tm_mday,
tm24h->tm_hour,tm24h->tm_min,tm24h->tm_sec);
return 0;
}
G. 如何計算linux下C程序的運行時間用time ./abc 這個得到的都是什麼時間呢
不知道你是不是學習編程的,如果不是就沒必要看了。
1.PID是進程標識號,它是一版個進程的唯一性標識。PPID是該進權程父進程的進程標識號。
2.fork和exec和pid完全就是2件事情不能混為一談。fork是一個linux庫函數。他是用來創建一個新的進程。至於exec是一個系列函數,C標准庫函數,用來改變進程上下文的。2者結合使用可以創建一個新的進程。
3.如果創建新的進程,一般是用fork,他會返回這個被創建進程的PID,你可以通過PID找到這個進程。
H. 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類型變數。
I. 同一段c語言代碼,Linux和windows下運算時間為何這么大
這有關操作系統中的進程管理.
拉高CPU運行,所指的其實就是提高優先順序,平常使用的都是相同優先順序進程,
你提高優先順序後,CPU就多跑你的進程,
而windows提高優先順序的函數請參考windows下相關API
兩個系統為什麼不同,要看到底有多少相同或更高級別任務運行,windows任務較多,所以跑到你的進程就比較少.這個你最好看看任務數量.
J. linux C 獲取時間以及計算時間差
可以用time()系統調用來獲取系統時間,然後減去之前記錄的時間就得到了時間差