日期:2014-05-16  浏览次数:20925 次

Linux 中关于sleep()函数的疑问

我想问一下,在这里的sleep(),是CPU执行到这条语句后什么也不干,就等5秒吗?? 还是怎么回事?
还有,这个sleep在哪个头文件中,我没包含任何关于sleep()的头文件但仍能执行,怎么回事??
------最佳解决方案--------------------
是这样的,这里sleep是为了让子进程在父进程之后执行,试想如果子进程先执行完了,父进程就会永远阻塞在waitpid函数,等待那个已经结束的子进程。
------其他解决方案--------------------
楼主已经包含啦~~~就是那个unistd.h
sleep简单的说,类似使当前进程睡眠!楼主的程序中就是子进程睡眠啦~
进程睡眠,就是将进程挂起,不再占用CPU,自豪于CPU这功夫儿在干啥!要看系统的调度函数怎么调度的了,这个就设计到系统内核了,楼主想了解这方面的话,可以先了解下操作系统,然后好好看看linux内核的书就好了!
------其他解决方案--------------------
sleep让子进程自动放弃CPU,父进程在wait处阻塞。sleep完后、子进程会重新获得CPU执行exit。
------其他解决方案--------------------
引用:
楼主已经包含啦~~~就是那个unistd.h
sleep简单的说,类似使当前进程睡眠!楼主的程序中就是子进程睡眠啦~
进程睡眠,就是将进程挂起,不再占用CPU,自豪于CPU这功夫儿在干啥!要看系统的调度函数怎么调度的了,这个就设计到系统内核了,楼主想了解这方面的话,可以先了解下操作系统,然后好好看看linux内核的书就好了!


说得不错,这里cpu在干咋,还得看进程调度,这就是进程的作用,是内核调度的基本单位。
sleep函数让进程挂起,当父进程在等待着子进程之行完后才执行,不然就一直阻塞在哪里
------其他解决方案--------------------
吾观楼主前面确实再学习C,然后现在转到linux上了,
但是建议楼主再学学操作系统的知识,看APUE
------其他解决方案--------------------
难道非得包含sleep.h???? man 3 sleep
SLEEP(3)                  Linux Programmer's Manual                 SLEEP(3)

NAME
       sleep - Sleep for the specified number of seconds

SYNOPSIS
       #include <unistd.h>

       unsigned int sleep(unsigned int seconds);

DESCRIPTION
       sleep()  makes  the  calling  thread sleep until seconds seconds have
       elapsed or a signal arrives which is not ignored
  
C语言也得继续学习呀,
------其他解决方案--------------------
好好学习用man帮助比window下的msdn还靠谱
------其他解决方案--------------------
sleep让当前的进程进入睡眠状态,这时一般来说系统就会执行其他进程
------其他解决方案--------------------
现在可以直接用。。