当前位置: 技术问答>linux和unix
请教高手linux编程的问题:如何实现毫秒级的延时?
来源: 互联网 发布时间:2014-11-07
本文导语: 从所周知,sleep是秒延时,有没有毫秒级的延时函数? 我做一守护进程,用sleep没问题,为实现毫秒级就写了一个延时函数,代码如下: delays(int timeout) //timeout的单位是毫秒 { struct itimerval value,ovalue; va...
从所周知,sleep是秒延时,有没有毫秒级的延时函数?
我做一守护进程,用sleep没问题,为实现毫秒级就写了一个延时函数,代码如下:
delays(int timeout) //timeout的单位是毫秒
{
struct itimerval value,ovalue;
value.it_value.tv_sec = 0;
value.it_value.tv_usec = timeout*1000;
value.it_interval.tv_sec = 0;
value.it_interval.tv_usec = 0;
setitimer(ITIMER_REAL, &value, &ovalue);
pause();
}
但是一执行完pause就异常退出,没有执行delays的后续代码。如果放在普通程序中用就没问题,我估计是守护进程的原因,请问高手怎么办?或者用替换方法?
我做一守护进程,用sleep没问题,为实现毫秒级就写了一个延时函数,代码如下:
delays(int timeout) //timeout的单位是毫秒
{
struct itimerval value,ovalue;
value.it_value.tv_sec = 0;
value.it_value.tv_usec = timeout*1000;
value.it_interval.tv_sec = 0;
value.it_interval.tv_usec = 0;
setitimer(ITIMER_REAL, &value, &ovalue);
pause();
}
但是一执行完pause就异常退出,没有执行delays的后续代码。如果放在普通程序中用就没问题,我估计是守护进程的原因,请问高手怎么办?或者用替换方法?
|
用select(null,null,null,null,tv)
好象
tv.tv_sec = 0;
tv.tv_usec = 1000;
用man select看看!呵呵...
好象
tv.tv_sec = 0;
tv.tv_usec = 1000;
用man select看看!呵呵...