sleep,即睡眠的意思,在Linux系统中,sleep命令主要用来延迟shell脚本的时间,也可使用于Windows系统中,下面小编针对sleep命令在Linux系统中的用法做个详细介绍,并为大家区别下Linux
sleep和Windows
sleep命令的用法。
linux
sleep
命令用来睡眠一段时间,sleep
可以用来将目前动作延迟一段时间。时间的单位有:秒(s),分钟(m),小时(h),天(d)
用法如下:
sleep
Number(suffix)
默认单位是秒(s)
sleep
1
==
sleep
1s
sleep
0.01
查看版本
linux
sleep
与
windows
sleep的区别
在linux里,sleep
的单位是秒,也就是sleep
1000就是睡眠了1000
秒,而在windows中,如果调用sleep函数单位是毫秒,sleep(1000)则是睡眠了1秒。
上面就是Linux使用sleep命令的方法介绍了,从本文的介绍中可以看出,sleep在Linux和Windows系统的区别主要表现在单位上,但用法并无太大差别。
⑵ Linux下的sleep函数 要用的话得包涵什么头文件啊
Linux下的sleep函数要用的话得需要#include <unistd.h>
sleep把进程的运行状态改为睡眠,将其从系统可执行队列去掉,这样系统就不会调度到该进程,不会分配CPU时间片,同时根据该进程的睡眠时间,将进程挂入相应的定时器队列中。
同时内核维持一个定时器队列,每一次时钟中断处理,都把当前到期的队列中的进程唤醒,加入到可运行进程队列中。 同时对所有挂入定时器队列中的进程时间值减1。
参考代码:
#include<stdio.h>
#include<unistd.h>
intmain()
{
int sec=0,
usec=0;
while(1)
{
printf("sec=%d ",++sec);
sleep(1);
printf("usec=%d ",++usec);
usleep(1000000);
}
return0;
}
(2)clinuxsleep头文件扩展阅读:
在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。
⑶ linux 的sleep()、usleep()、nanosleep()函数
原文地址: 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中的,所以都适用