linux系统编程 挂起pause() 、睡眠sleep()

  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 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值