Linux下的sleep函数 要用的话得需要#include <unistd.h>
sleep把进程的运行状态改为睡眠,将其从系统可执行队列去掉,这样系统就不会调度到该进程,不会分配CPU时间片,同时根据该进程的睡眠时间,将进程挂入相应的定时器队列中。
同时内核维持一个定时器队列,每一次时钟中断处理,都把当前到期的队列中的进程唤醒,加入到可运行进程队列中。 同时对所有挂入定时器队列中的进程时间值减1。
参考代码:
#include<stdio.h>
#include<unistd.h>
int main()
{
int sec=0,
usec=0
while(1)
{
printf("sec = %d \n",++sec)
sleep(1)
printf("usec = %d \n",++usec)
usleep(1000000)
}
return 0
}
扩展资料:
在Linux下,sleep中的“s”不大写
sleep()单位为秒,usleep()里面的单位是微秒。在内核中,sleep的实现是由pause函数和alarm函数两个实现的。
特别注意在Codeblocks环境下是无法使用sleep函数的,因为在windows上Codeblocks采用mingw(Gnu在Window环境下的编译器,可以充分使用WindowsApi)作为编译器,而在stdlib.h中sleep的说明如下:_CRTIMP void __cdecl __MINGW_NOTHROW _sleep (unsigned long) __MINGW_ATTRIB_DEPRECATED可以认为mingw舍弃了sleep函数,建议用Sleep实现sleep。
参考资料来源:百度百科-Sleep函数
分享一个小技巧。
我们在写Linux应用程序时,有时候记不清某个系统函数的头文件,往往要么百度,要么查源码,这样做都不方便,费时费力。
其实,可以用一个命令搞定:man。
比如,我要查sleep函数的头文件,在终端下敲命令: man sleep ,输出信息:
并没有发现头文件!但是,请看红框里的内容,意思是当前显示的只是sleep手册的第1页,还有第3页可以参考,继续输命令 man 3 sleep ,输出信息:
看红框中的内容,是不就看到sleep函数的头文件及函数原型定义了!
查看read函数头文件,同样的,输入 man read ,直接可以查到:
是不是很方便啊!!!
#include // 头文件\x0d\x0aint usleep(useconds_t usec) // 函数原型\x0d\x0ausec -- 毫秒。整数。最大允许值:小于 1000000\x0d\x0a返回 0 -- 表示调用执行成功,1 -- 失败。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)