time.c
上传用户:sdtbys
上传日期:2009-12-06
资源大小:13k
文件大小:2k
源码类别:

并口编程

开发平台:

C/C++

  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <sys/time.h>
  4. #include <signal.h>
  5. #include <sys/types.h>
  6. #include <unistd.h>
  7. char *GetTime();
  8. char *GetFmtTime();
  9. int timeoutopen(int timeout);
  10. int timeoutclose();
  11. static char times[30];
  12. char *GetTime()
  13. {
  14.   time_t t;
  15.   struct tm tm;
  16.   memset(times,0,sizeof(times));
  17.   t=time(NULL);
  18.   memcpy(&tm,localtime(&t),sizeof(struct tm));
  19.   sprintf(times,"%04d%02d%02d%02d%02d%02d",
  20.                     tm.tm_year+1900,tm.tm_mon+1,tm.tm_mday,
  21.                     tm.tm_hour,tm.tm_min,tm.tm_sec);
  22.   return(times);
  23. }
  24. char *GetFmtTime()
  25. {
  26.   time_t t;
  27.   struct tm tm;
  28.   memset(times,0,sizeof(times));
  29.   t=time(NULL);
  30.   memcpy(&tm,localtime(&t),sizeof(struct tm));
  31.   sprintf(times,"%04d/%02d/%02d %02d:%02d:%02d",
  32.                     tm.tm_year+1900,tm.tm_mon+1,tm.tm_mday,
  33.                     tm.tm_hour,tm.tm_min,tm.tm_sec);
  34.   return(times);
  35. }
  36. static void (*alrm_old)(int);
  37. void   timeout_p(int v_sig)
  38.   return;
  39. }
  40. int timeoutopen(int timeout)
  41. {   
  42.     alrm_old= signal(SIGALRM,timeout_p);
  43.     alarm(timeout);
  44. }
  45. int timeoutclose()
  46. {   int timeleft;
  47.     timeleft=alarm(0);
  48.     signal(SIGALRM,alrm_old);
  49.     return(timeleft);
  50. }
  51. int TimeOut(int fd,int timeout)
  52. {
  53.   struct timeval t;
  54.   fd_set fdset;
  55.   t.tv_sec=timeout;
  56.   t.tv_usec=0;
  57.   
  58.   FD_ZERO(&fdset);
  59.   FD_SET(fd,&fdset);
  60.   select(fd+1,&fdset,NULL,NULL,&t);
  61.  
  62.   if (FD_ISSET(fd,&fdset))
  63.   {
  64.     ShowMsg("fd %d can been read ! n",fd);
  65.     return(0);
  66.   }
  67.   else
  68.   {
  69.     ShowMsg("fd %d can not been read now! timeout=%d n",fd,timeout);
  70.     return(1);
  71.   }
  72. }
  73. /*main()
  74. { int i,j;
  75.   char c[50];
  76.  i=getpid();j=getppid();
  77.  printf("pid=%d ppid=%dn",i,j);
  78.  getHostTime(c);
  79.  printf("time=%sn",c);
  80. }*/
  81. /*
  82. main()
  83. {
  84.   printf("time=%sn",GetTime());
  85.   printf("fmttime=%sn",GetFmtTime());
  86. }
  87. */
  88. /*main()
  89. { char buf[30]; int timeleft;
  90.   timeoutopen(30);
  91.   scanf("%s",buf); 
  92.   timeleft=timeoutclose();
  93.   printf("timeleft=%dn",timeleft);
  94. }*/ 
  95. /*
  96. char MsgLog[30]="./test.log";
  97. main()
  98. {
  99.   if (TimeOut(0,5)) printf("timeout n");
  100.   else printf("can readn");
  101. }*/
  102.