12.时钟与信号

  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 }

猜你喜欢

转载自www.cnblogs.com/xiaochi/p/8986881.html