Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何使应用程序适应时钟设置时间_C_Date_Time_Posix_Usleep - Fatal编程技术网

C 如何使应用程序适应时钟设置时间

C 如何使应用程序适应时钟设置时间,c,date,time,posix,usleep,C,Date,Time,Posix,Usleep,应用程序(在linux 2.6.31上运行)使用usleep调用进行调整。但是,它看起来对日期更改没有弹性(从shell使用date,或者从另一个进程使用clock\u settime)。 要避免应用程序被锁定,正确的做法是什么 edit1 假设应用程序希望每100毫秒执行一次操作。作业完成后,它会调用gettimeofday,并推断剩余的ms睡眠时间,直到下一个100ms切片,然后调用usleep。如果您必须确定时间间隔,而不是当前日期/时间,则必须使用此调用: 结构时间间隔 uint64_t

应用程序(在linux 2.6.31上运行)使用
usleep
调用进行调整。但是,它看起来对日期更改没有弹性(从shell使用
date
,或者从另一个进程使用
clock\u settime
)。 要避免应用程序被锁定,正确的做法是什么

edit1


假设应用程序希望每100毫秒执行一次操作。作业完成后,它会调用gettimeofday,并推断剩余的ms睡眠时间,直到下一个100ms切片,然后调用usleep。

如果您必须确定时间间隔,而不是当前日期/时间,则必须使用此调用:

结构时间间隔
uint64_t microsec

时钟获得时间(时钟单调,&tim)
microsec=10000000ull*tim.tv\u sec+tim.tv\u nsec/1000

这是您的系统正常运行时间,真正的完整“硬件”时间(无法修改)


关于定期例程,可以使用alarm()和setitimer()设置定期处理程序。

通常如何调用usleep(),即应用程序多久唤醒一次并运行一次?试着解释一下问题是什么,当时钟改变时会出现什么问题?@放松。嗯,我编辑了这个问题。希望它更清楚。