2

我想在给定时间参数时将数据写入文件:例如我得到 x= 7 -> 意思是在接下来的 7 秒内将一些随机数据写入文件我在这样做时遇到了一些困难,我尝试过使用:clock( ) 和 struct timeval 但它不起作用

我尝试过的事情:

struct timeval start, end;
gettimeofday(&start, 0);
while(  gettimeofday(&end, 0) && end.tv_sec - start.tv_sec < sec )
  {
    write....
  }

但它停止了时钟..

很想得到一些帮助。谢谢

4

3 回答 3

7

如果getTimeOfDay成功,则返回 0,然后您的while条件失败。尝试:

while(  (gettimeofday(&end, 0) == 0) && end.tv_sec - start.tv_sec < sec )
{
    write....
}
于 2013-03-03T18:52:00.483 回答
1

考虑操作顺序...尝试在操作数周围添加括号&&

人:gettimeofday()

RETURN VALUE
    The `gettimeofday()` function shall return 0 and 
    no value shall be reserved to indicate an error.

在您的代码中,因为 gettimeofday() 在成功时返回 0 而循环中断。

下面的代码用!逻辑非运算符纠正。

while(  (!gettimeofday(&end, 0)) && end.tv_sec - start.tv_sec < sec )
  {
    write....
  }
于 2013-03-03T18:50:07.160 回答
0

您应该考虑使用clock_gettime而不是gettimeofday声称被POSIX.1-2008.

#include <time.h>

int main()
{
    struct timespec start, end;
    int sec = 10; // Number of seconds

    clock_gettime(CLOCK_REALTIME, &start);
    while( !clock_gettime(CLOCK_REALTIME, &end)
           && end.tv_sec - start.tv_sec < sec )
    {
        // Write ...
    }
}

注意:如果您正在使用gccg++编译您的程序,您需要librt通过附加链接到库-lrt

gcc myprogram.c -o myprogram -lrt
于 2013-03-03T19:37:19.190 回答