Linux异步信号处理机制1

10.1Linux常见信号处理

10.1.1信号与中断

Linux信号是一种进程间异步通信机制,在实现上是一种软中断。信号可以导致一个正在运行的进程被异步打断,转而处理一个突发事件。
Linux在/usr/include/asm/signal.h中详细的定义了信号的信号值。

➜  _10_SIGNALS cat /usr/include/asm/signal.h 
。。。
#define SIGHUP		 1
#define SIGINT		 2
#define SIGQUIT		 3
#define SIGILL		 4
#define SIGTRAP		 5
#define SIGABRT		 6
#define SIGIOT		 6
#define SIGBUS		 7
#define SIGFPE		 8
#define SIGKILL		 9
#define SIGUSR1		10
#define SIGSEGV		11
#define SIGUSR2		12
#define SIGPIPE		13
#define SIGALRM		14
#define SIGTERM		15
#define SIGSTKFLT	16
#define SIGCHLD		17
#define SIGCONT		18
#define SIGSTOP		19
#define SIGTSTP		20
#define SIGTTIN		21
#define SIGTTOU		22
#define SIGURG		23
#define SIGXCPU		24
#define SIGXFSZ		25
#define SIGVTALRM	26
#define SIGPROF		27
#define SIGWINCH	28
#define SIGIO		29
#define SIGPOLL		SIGIO
/*
#define SIGLOST		29
*/
#define SIGPWR		30
#define SIGSYS		31
#define	SIGUNUSED	31
。。。

SIGCHLD:子进程退出时会给父进程发送该信号,父进程可以根据该信号来完成对子进程的PCB资源的回收。
SIGSTOP和SIGKILL不能被屏蔽、安装。用户不能自定义这两个信号的处理。
SIGSTOP和SIGCONT是配对的。一个进程在收到SIGSTOP后会暂停执行,进入暂停状态,并屏蔽除SIGKILL所有的信号。当该进程收到SIGCONT信号后会继续执行。
信号可以唤醒被中断的进程,例如,可以唤醒调用sleep函数进入阻塞状态的进程。

10.1.2信号的基本概念

发送信号:产生信号,有多种发送信号的方式。一个进程可以向另一个进程发送一个特定信号;内核可以向用户进程发送信号,一个进程还可以给自己发送信号。
安装信号:设置信号到来时不再执行默认操作,而是执行自定义代码,即期望某个信号到来时让进程执行相应的中断服务程序。
递送信号:一个信号被操作系统发送到目标进程。
捕获信号:被递送的信号在目标进程引起某段处理程序的执行。
屏蔽信号:进程告诉系统暂时不接收某些信号。如果进程该信号的屏蔽,该信号将被捕获到。
忽略信号:信号被递送到目标进程,但目标进程不处理,直接丢弃。
未决信号:信号已经产生,但因目标进程暂时屏蔽该信号而不能被目标进程捕获的信号。
可靠信号与不可靠信号:编号小于32的信号为不可靠信号,大于32的信号为可靠信号。如果进程在屏蔽某个信号的时间内,其他进程多次向其发送同一个信

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值