pause()与sigsuspend()的用法

一.pause函数:

功能:让进程暂停直到信号出现

#include<unistd.h>

intpause();

函数说明:pause()会令目前的进程暂停(进入睡眠状态),直至信号(signal)所中断。

返回值:只返回-1

例子:

#include<stdio.h>

#include<unistd.h>

 

void deal()

{

   printf(“信号干扰!\n”);

}

 

void main()

{

     printf(“进程执行!\n”);

    signal(SIGINT,deal);

    pause();

    printf(“进程结束!\n”);

}

 

说明:

当程序运行时,pause会使当前的进程挂起(进入睡眠状态),直到我们向该进程发送SIGINT中断信号,进程才会被唤醒,并处理信号,处理完信号后pause函数才返回,并继续运行该程序。注:任何信号都可是pause唤醒。



pause(让进程暂停直到信号出现)
相关函数
kill,signal,sleep
表头文件
#include<unistd.h>
定义函数
int pause(void);
函数说明
pause()会令目前的进程暂停(进入睡眠状态),直到被信号(signal)所中断。
返回值
只返回-1。
错误代码
EINTR 有信号到达中断了此函数。

[cpp]  view plain copy
  1. #include <unistd.h>  
  2. #include <stdio.h>  
  3. #include <signal.h>  
  4. void myfunc()  
  5. {  
  6.     printf("myfunc\n");  
  7.     exit(0);         //如果没有此句,程序在主函数中继续运行,输出never run  
  8. }  
  9. int main()  
  10. {  
  11.     unsigned int i;  
  12.     int time;  
  13.     alarm(9);  
  14.     sleep(2);  
  15.     time = alarm(0);            //闹钟取消,返回剩余时间,每次只能有一个闹钟生效  
  16.     printf("dd%d\n",time);  
  17.   
  18.     alarm(2);  
  19.     signal(SIGALRM, myfunc);    //catching signal,获得闹钟返回的信号SIGALRM,运行对应程序。  
  20.     pause();                    //挂起进程,当获得信号后,调用signal函数,如果没有信号调用默认的catching函数一般就会退出进程  
  21.     printf("never run");      
  22.     return 0;  
  23. }  

二.sigsuspend函数:

    #include<signal.h>

   intsigsuspend(const sigset_t *sigmask);

  返回值:-1

  sigsuspend函数和pause函数一样,可以是进程挂起(进入睡眠状态),直至有信号发生。

sigsuspend函数的参数是一个信号集,这个信号集是用来屏蔽信号的,信号集中存放了要屏蔽的信号。

如果该信号集为空的话,sigsuspend就不屏蔽任何信号,任何信号都可以使进程从挂起状态唤醒,这就与pause函数一样了。




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值