1 /*
2 pause()头文件 #include<unistd.h>
3 原型: int pause(void);
4 返回值:-1并设置errno为EINTR
5 1.如果信号的默认处理动作是终止进程,则进程终止,pause函数没有机会返回
6 2.如果信号的默认处理动作是忽略,进程进行处于挂起状态,pause函数不返回
7 ##3.如果信号的处理动作是捕捉,则调用完信号处理函数后
8 pause返回-1,error设置为EINTR,表示被信号中断
9 4.pause收到的信号不能被屏蔽,如果被屏蔽,pause的这个进程将一直处于挂起状态
10 作用:该函数可以造成进程主动挂起,等待信号唤醒
11
12 */
13
14 /*
15 sleep() #include<unistd.h>
16 unsigned int sleep(unsigned int seconds);
17 返回值:0或剩余的秒数,无失败
18 */
19
20
21
22
23 //pause(),alarm(),signal()三个函数简单实现系统函数sleep
24 #include<stdio.h>
25 #include<unistd.h>
26 #include<signal.h>
27 #include<errno.h>
28 void wake(int argc)
29 {
30 printf("i wake up\n");
31 }
32 void main(void)
33 {
34 int ret;
35 alarm(5);//计时器计时5秒
36 signal(SIGALRM,wake);//也可用sigaction()
37 ret=pause();//挂起等待信号
38 if(ret==-1&&errno==EINTR){
39 printf("pause sucessful\n");
40 }
41 while(1);
42 }
linux系统编程 挂起pause() 、睡眠sleep()
最新推荐文章于 2025-04-06 10:17:45 发布