1 #include <stdio.h>
2 #include <time.h>
3 #include <string.h>
4 #include <unistd.h>
5 #include <signal.h>
6 //excise to ms
7 #include <sys/time.h>
8
9 //get time
10 void TestTime()
11 {
12
13 time_t iTime = time(NULL);
14 //get time(second).from 1900.01.01 to now
15 time(&iTime);
16 printf("iTime:%d\n",(int)iTime);
17
18 //time's struct
19 struct tm *pNow;
20 pNow = localtime(&iTime);
21 //get current time
22 printf("TIME:%4d-%02d-%02d %02:%02d:%02d week %d \n"
23 ,pNow->tm_year + 1900,pNow->tm_mon +1 ,pNow->tm_mday,
24 pNow->tm_hour,pNow->tm_min,pNow->tm_sec,
25 pNow->tm_wday);
26
27 char szTime[40];
28 //data time
29 strftime(szTime,40,"TIME:%x %X\n",pNow);
30 printf("%s\n",szTime);
31
32 strftime(szTime,40,"TIME: %Y-%m-%d %H:%M:%S week %w\n",pNow);
33 printf("%s\n",szTime);
34 }
35
36 //get precise time
37 void TestMicroTime()
38 {
39 struct timeval tv;
40 struct timezone tz;
41
42 gettimeofday(&tv,&tz);
43
44 struct tm *pNow = localtime(&(tv.tv_sec));
45
46 printf("Precise TIME:%4d-%02d-%02d %02d:%02d:%02d\n"
47 ,pNow->tm_year + 1900,pNow->tm_mon +1 ,pNow->tm_mday,
48 pNow->tm_hour,pNow->tm_min,pNow->tm_sec,
49 (int)tv.tv_usec);
50 printf("zone:offset minute=%d,dst=%d\n",tz.tz_minuteswest,tz.tz_dsttime);
51
52
53 //calc runing time
54 struct timeval tv1,tv2;
55 gettimeofday(&tv1,NULL);
56 int i=0,sum=0;
57 while(i++<0xfffffff)
58 {
59 sum += i;
60 }
61 gettimeofday(&tv2,NULL);
62
63 int usec = tv2.tv_usec - tv1.tv_usec;
64 int sec = tv2.tv_sec - tv1.tv_sec;
65
66 if(usec<0)
67 {
68 usec += 1000*1000;
69 sec--;
70 }
71
72 printf("Interval time: %d,%d\n",sec,usec);
73 }
74
75 void fun(int sig)
76 {
77 printf("Receive signal:%s [%d]\n",strsignal(sig),sig);
78
79 //resume default dispose
80 signal(SIGINT,SIG_DFL);
81 }
82
83 void TestSignal()
84 {
85 printf("Test signal...\n");
86 //capture SIGINT
87 signal(SIGINT,fun);
88 //capture SIGTERM
89 signal(SIGTERM,fun);
90 //ignore this signal
91 signal(SIGKILL,SIG_IGN);
92 while(1);
93 }
94
95
96 int main()
97 {
98 //TestTime();
99 //TestMicroTime();
100 TestSignal();
101
102 return 0;
103 }