![在linux下,想用sleep函数实现延时五秒,应该怎么设参数?,第1张 在linux下,想用sleep函数实现延时五秒,应该怎么设参数?,第1张](/aiimages/%E5%9C%A8linux%E4%B8%8B%EF%BC%8C%E6%83%B3%E7%94%A8sleep%E5%87%BD%E6%95%B0%E5%AE%9E%E7%8E%B0%E5%BB%B6%E6%97%B6%E4%BA%94%E7%A7%92%EF%BC%8C%E5%BA%94%E8%AF%A5%E6%80%8E%E4%B9%88%E8%AE%BE%E5%8F%82%E6%95%B0%EF%BC%9F.png)
使用权限 : 所有使用者 使用方式 : sleep [--help] [--version] number[smhd] 说明 : sleep 可以用来将目前动作延迟一段时间 参数说明 : --help : 显示辅助讯息 --version : 显示版本编号 number : 时间长度,后面可接 s、m、h 或 d 其中 s 为秒,m 为 分钟,h 为小时,d 为日数 例子 : 显示目前时间后延迟 1 分钟,之后再次显示时间 : datesleep 1mdate 这个命令更多应用于shell脚本编程里和程序里 如下面的一段程序: 应用程序: 复制代码代码如下:#include <syswait.h>usleep(n) //n
微秒 Sleep(n)//n毫秒 sleep(n)//n秒 驱动程序: #include <linux/delay.h>mdelay(n) //milliseconds 其实现 #ifdef notdef #define mdelay(n) (\ {unsigned long msec=(n)while (msec--) udelay(1000)}) #else #define mdelay(n) (\ (__builtin_constant_p(n) &&(n)<=MAX_UDELAY_MS) ? udelay((n)*1000) : \ ({unsigned long msec=(n)while (msec--) udelay(1000)})) #endif 调用asm/delay.h的udelay,udelay应该是纳秒级的延时 Dos: sleep(1)//停留1秒 delay(100)//停留100毫秒 Windows: Sleep(100)//停留100毫秒 Linux: sleep(1)//停留1秒 usleep(1000)//停留1毫秒 每一个平台不太一样,最好自己定义一套跨平台的宏进行控制 秒还是微秒?关于延时
函数sleep() 因为要写一段代码,需要用到sleep()函数,在我印象中,sleep(10)好像是
休眠10微秒,结果却是休眠了10秒(在Linux下)。觉得很奇怪,因为头儿也记得好像是微秒为单位的。所以就查了一下。 原来linux下的sleep函数原型为:
unsigned int sleep(unsigned int seconds)而MFC中的Sleep函数原型为: void Sleep(DWORD dwMilliseconds)也就是说,Linux下(使用的gcc的库),sleep()函数是以秒为单位的,sleep(1)就是休眠1秒。而MFC下的sleep()函数是以微秒为单位的,sleep(1000)才是休眠1秒。原来如此啊。而如果在Linux下也用微妙为单位休眠,可以使用线程休眠函数:void usleep(unsigned long usec)当然,使用的时候别忘记#include <system.h>哦。 另外值得一提的是,linux下还有个delay()函数,原型为extern void delay(unsigned int msec)它可以延时msec*4毫秒,也就是如果想延时一秒钟的话,可以这么用 delay(250)
你是指延迟函数还是定时调用,比如到11:12:13秒执行某个函数?
如果是延时函数用
usleep(usec) // 微妙
sleep(sec) // 秒
如果是定时执行的话,你只能开个线程或while,每隔1s判断下当前系统时间,
struct tm *ptm
long ts
int y,m,d,h,n,s
ts = time(NULL)
ptm = localtime(&ts)
y = ptm-> tm_year+1900 //年
m = ptm-> tm_mon+1 //月
d = ptm-> tm_mday //日
h = ptm-> tm_hour //时
n = ptm-> tm_min //分
s = ptm-> tm_sec //秒
照着上面的格式组成字符串进行判断,到点了就执行就可以了
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
int main()
{
int rc = 0
struct timeval tv
while (true)
{
tv.tv_sec = 5
tv.tv_usec = 0
rc = select(0, NULL, NULL, NULL, &tv)
printf("select = %d\n", rc)
}
return 0
}
评论列表(0条)