sleep函数:
#include <unistd.h>
unsigned int sleep(unsigned int seconds);
此函数使调用进程被挂起,直到满足以下条件之一:
1)已经过了seconds所指定的墙上时钟时间
2)调用进程捕捉到一个信号并从信号处理程序返回
注:由于其他系统活动,实际返回时间比所要求的会迟一些,像alarm一样。
sleep的返回值:
1)在上述第一种情形中,返回值是0
2)当由于捕捉到某个信号sleep提前返回时,返回值是未睡够的时间(所要求的时间减去实 际休眠时间)
看看下面的例子,猜猜sleep()的返回值是多少
1 #include <stdio.h>
2 #include <time.h>
3 #include <signal.h>
4
5 #define DIAPAUSE 30 //sleep time 30s
6 #define TIMEOUT 5
7
8 void sigalrm(int signo);
9
10 int main()
11 {
12 struct sigaction sa;
13
14 sa.sa_handler = sigalrm;
15 sa.sa_flags = 0;
16 sigemptyset(&sa.sa_mask);
17 if(sigaction(SIGALRM, &sa, NULL) < 0)
18 {
19 printf("sigaction error!\n");
20 return;
21 }
22
23 while(1)
24 {
25 printf("alarm(TIMEOUT)...\n");
26 alarm(TIMEOUT);
27 printf ("...\n");
28 printf("sleep (DIAPAUSE) == %d\n", sleep(DIAPAUSE));
29 }
30
31 return 0;
32 }
33
34 void sigalrm(int signo)
35 {
36 printf("timeout...\n");
37 return;
38 }