linux网络编程---------信号大讲堂
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux网络编程---------信号大讲堂相关的知识,希望对你有一定的参考价值。
1. 信号简介
linux系统中无时无该产生着信号.信号在linux上又称软件中断,用来通知进程发生了异步事件。在软件层次上是对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是进程间通信机制中唯一的异步通信机制,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件。信号机制除了基本通知功能外,还可以传递附加信息。
2. 信号的四要素
编号:每种信号在linux系统中都有唯一的编号.可在命令下通过kill -l查看所有信号
信号名:每种信号在linux系统中都有唯一的信号名,可在命令下通过kill -l查看所有信号
事件:需要满足特定事件才发送
默认处理动作:每种信号都有默认处理行为(下面会详细说明)
3. 信号的共用性:
简单:信号是linux IPC进程间通信中开销最小的机制
不能携带大量数据
需要满足特定事件才发送
4. 信号的机制
每个进程收到的所有信号,都是由内核kernel负责发送,并由内核在内核处理执行
5. 产生信号的分类
键盘:
Ctrl+c ---> 2 SIGINT
Ctrl+z ---> 19 SIGSTOP
Ctrl+\ ---> 3 SIGQUIT
系统调用
程序上,kill sigqueue
软件条件满足
alarm setitimer 定时器
硬件错误(程序错误)
非法访问内存: 段错误 ----> 11 SIGSEGV
除0: 浮点数例外 ----> 8 SIGFPE
内存对齐出错:总线错误 ---->
命令发出
kill
6. 信号的处理方式
执行默认动作
term 终止进程
lgn 忽略信号
core 终止进程,并产生core文件,供调试使用
stop 停止(暂停)进程
cont 继续运行进程
执行忽略处理
捕捉: 执行用户注册时的回调函数
***注意:SIGKILL 和 SIGSTOP信号处理方式只能是执行默认动作,不能够忽略和捕捉.
本文出自 “sea” 博客,请务必保留此出处http://lisea.blog.51cto.com/5491873/1787830
以上是关于linux网络编程---------信号大讲堂的主要内容,如果未能解决你的问题,请参考以下文章