泛谈 ---------信号

首先需要了解linux 里面信号是什么? 信号是消息的表现形式,消息是信号的内容。通俗来讲走是一个信号 ,停也是一个信号,ctrl +c 也是一个信号。信号来源于系统内核。而产生信号的请求则来源于三个地方:

1.用户:用户能够通过输入ctrl   c  ,ctrl -\,或者终端驱动程序分配给信号控制字符的其他键来请求内核产生信号。

2.系统内核:当进程执行出错时 内核将发送一个信号,例如 不合法的段存取,浮点数溢出,或者一个非法的机器指令,系统也将发出信号指定特定的事件发生。

3.进程:一个进程可以通过系统调用kill 给另一进程发送信号,两个进程间可以通过信号进行通信。

(由某个进程的某个操作产生的信号成为同步信号。进程外的事件引起的信号被称为异步信号)

中断信号:SIGINT   退出信号:SIGQUIT   非法段存取信号:SIGSEGV

信号的处理:当进程收到一个中断信号时 ,不一定非要消亡,进程能通过系统调用signal告诉内核他要如何处理该信号,通常有三个选择:

1.接收默认处理,即消亡。

2.通过signal(SIGINT,SIG_IGN).  也可以通过调用 signal(SIGINT,SIG_DFL)来恢复默认。

3.调用一个函数:下面为一个简单的例子:

 1 #include<stdio.h>
  2 #include<unistd.h>
  3 #include<signal.h>
  4 int main(){
  5     int i;
  6     void f(signum){
  7 
  8         printf("调用成功!");
  9     }
 10   signal(SIGINT,f);
 11     for(i=0;i<5;++i){
 12 
 13         printf("hello\n");
 14         sleep(1);
 15     }
 16 return  0;
 17 }




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值