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