可以用于windows或者linux下面,Windows下面的头文件是#include<windows.h>,在Linux下面的头文件是#include<unistd.h>。
语法是 unsigned sleep(unsigned seconds)
示例:
#include<windows.h>
#include<stdio.h>
int main()
{
int a
a = 1
printf("Hello")
sleep(a)
printf("World!")
return 0
}
2)usleep()也是用于把程序挂起,单位是微妙(us)。
usleep()只用于linux下面,头文件是#include<unistd.h>。
语法是 void usleep(int microseconds)
示例:
3)时间单位换算
1秒 = 1000毫秒 = 1000,000微秒 = 1000,000,000纳秒 = 1000,000,000,000皮秒
分享一个小技巧。
我们在写Linux应用程序时,有时候记不清某个系统函数的头文件,往往要么百度,要么查源码,这样做都不方便,费时费力。
其实,可以用一个命令搞定:man。
比如,我要查sleep函数的头文件,在终端下敲命令: man sleep ,输出信息:
并没有发现头文件!但是,请看红框里的内容,意思是当前显示的只是sleep手册的第1页,还有第3页可以参考,继续输命令 man 3 sleep ,输出信息:
看红框中的内容,是不就看到sleep函数的头文件及函数原型定义了!
查看read函数头文件,同样的,输入 man read ,直接可以查到:
是不是很方便啊!!!
原文地址: https://blog.csdn.net/weibo1230123/article/details/79139476
sleep()非系统调用,sleep()是在库函数中实现的,它是通过alarm()来设定报警时间,使用sigsuspend()将进程挂起在信号SIGALARM上。
sleep()只能精确到秒级上。sleep()会令目前的进程暂停,直到达到参数seconds 所指定的时间,或是被信号所中断。
return:若进程暂停到参数seconds 所指定的时间,成功则返回0,若有信号中断则返回剩余秒数。
除了时间单位为微秒以外,在使用上与sleep()差不多。还有就是实现也是不同的,sleep因为是用alarm实现的,所以时间单位为s ,而usleep的时间单位为us
,那肯定不是由alarm实现的,所以说它们的实现不同,但都是linux用的,而window下不能用,因为都是sleep和usleep都是在unistd.h下定义的。
return:若进程暂停到参数seconds 所指定的时间,成功则返回0,若有信号中断则返回剩余微秒数。
这个函数功能是暂停某个进程直到你规定的时间后恢复,参数req就是你要暂停的时间,其中req->tv_sec是以秒为单位,而tv_nsec以毫微秒为单位(10的-9次方秒)。由于调用nanosleep是是进程进入TASK_INTERRUPTIBLE,这种状态是会相应信号而进入TASK_RUNNING状态的,这就意味着有可能会没有等到你规定的时间就因为其它信号而唤醒,此时函数返回-1,切还剩余的时间会被记录在rem中。
return: 若进程暂停到参数 req所指定的时间,成功则返回0,若有信号中断则返回-1,并且将剩余微秒数记录在 rem中。
unistd.h 是 unix 系统标准头文件,用于系统调用,相当于win32中的windows.h,unistd.h 定义的函数只能用于UNIX环境中,而不能用于windows。所以sleep 和 usleep 只能用于linux下,而不能用于windows 。
nalosleep 和 其它时间日期 *** 作函数一样都是定义在time.h中的,所以都适用
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)