当前位置: 技术问答>linux和unix
linux 下 延迟500ms ?
来源: 互联网 发布时间:2015-09-28
本文导语: linux 下 延迟500ms? 1.查到有个Turbo C 函数里面有个delay()单位是毫秒,在dos.h 直接采用,编译不过去,提示“called objet is not a fun" 但Linux下面也有dos.h ,跟踪,发现有保护了其他的文件 继续跟踪了,...
linux 下 延迟500ms?
1.查到有个Turbo C 函数里面有个delay()单位是毫秒,在dos.h
直接采用,编译不过去,提示“called objet is not a fun"
但Linux下面也有dos.h ,跟踪,发现有保护了其他的文件
继续跟踪了,但是新手,不知道find 命令能否直接查找字符串,直接找“delay()",看有没有?
2.linux 下倒有个sleep(),可惜单位是second
请问高手如何实现?
1.查到有个Turbo C 函数里面有个delay()单位是毫秒,在dos.h
直接采用,编译不过去,提示“called objet is not a fun"
但Linux下面也有dos.h ,跟踪,发现有保护了其他的文件
继续跟踪了,但是新手,不知道find 命令能否直接查找字符串,直接找“delay()",看有没有?
2.linux 下倒有个sleep(),可惜单位是second
请问高手如何实现?
|
用select()可以实现:
void Sleep(int iSec, int iUSec)
{
struct timeval timetosleep;
timetosleep.tv_sec = iSec; // 秒
timetosleep.tv_usec = iUSec;// 微秒(精度根据具体系统CPU时间片而定)
select(NULL, NULL, NULL, NULL, &timetosleep);
return;
}
上面的函数可以延迟到微秒,该函数有两个参数,一个是秒,一个是微秒。
象你的要求,只需要这样:
Sleep(0, 500000); // 0秒 + 500000微秒
void Sleep(int iSec, int iUSec)
{
struct timeval timetosleep;
timetosleep.tv_sec = iSec; // 秒
timetosleep.tv_usec = iUSec;// 微秒(精度根据具体系统CPU时间片而定)
select(NULL, NULL, NULL, NULL, &timetosleep);
return;
}
上面的函数可以延迟到微秒,该函数有两个参数,一个是秒,一个是微秒。
象你的要求,只需要这样:
Sleep(0, 500000); // 0秒 + 500000微秒
|
精确的500ms估计差点,不要求很严格的话usleep还行……
|
usleep(500000);
|
usleep 或者 nanosleep
usleep 是 lib function,nanosleep 是 syscall
usleep 是 lib function,nanosleep 是 syscall
|
usleep