如何比较C中的两个时间戳?

前端之家收集整理的这篇文章主要介绍了如何比较C中的两个时间戳?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写一个保存两个输入插座的FIFO队列的套接字程序.当决定要服务的队列时,程序从每个队列中拉出最近的时间戳.

我需要一个比较两个时间结构的可靠方法.我尝试使用timercmp(),但我的gcc版本不支持它,而且文档规定该功能不符合POSIX标准.

我该怎么办?

解决方法

谷歌时间给 this first result.从那个页面

通常需要减去struct timeval或struct timespec的两个值.这是最好的方法.即使在某些特殊的操作系统中,tv_sec成员具有无符号类型,它也可以工作.

/* Subtract the `struct timeval' values X and Y,storing the result in RESULT.
    Return 1 if the difference is negative,otherwise 0.  */

 int
 timeval_subtract (result,x,y)
      struct timeval *result,*x,*y;
 {
   /* Perform the carry for the later subtraction by updating y. */
   if (x->tv_usec < y->tv_usec) {
     int nsec = (y->tv_usec - x->tv_usec) / 1000000 + 1;
     y->tv_usec -= 1000000 * nsec;
     y->tv_sec += nsec;
   }
   if (x->tv_usec - y->tv_usec > 1000000) {
     int nsec = (x->tv_usec - y->tv_usec) / 1000000;
     y->tv_usec += 1000000 * nsec;
     y->tv_sec -= nsec;
   }

   /* Compute the time remaining to wait.
      tv_usec is certainly positive. */
   result->tv_sec = x->tv_sec - y->tv_sec;
   result->tv_usec = x->tv_usec - y->tv_usec;

   /* Return 1 if result is negative. */
   return x->tv_sec < y->tv_sec;
 }

猜你在找的C&C++相关文章