我想在给定时间参数时将数据写入文件: 例如,我得到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....
}
但它会停止时钟..
很想得到一些帮助。 感谢
答案 0 :(得分:7)
如果getTimeOfDay
成功,则返回0,然后while
条件失败。尝试:
while( (gettimeofday(&end, 0) == 0) && end.tv_sec - start.tv_sec < sec )
{
write....
}
答案 1 :(得分:1)
考虑操作顺序...尝试在 &&
man: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....
}
答案 2 :(得分: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 ...
}
}
。
gcc
注意:如果您正在使用g++
或librt
来编译您的程序,则需要通过附加{{1}来链接-lrt
库}}:
gcc myprogram.c -o myprogram -lrt