Linux信号通信

信号是Linux系统中的一种异步通信方式,用于用户进程和内核进程间的交互及系统事件通知。信号处理包括忽略、捕捉和执行默认操作,不能忽略的信号有SIGKILL和SIGSTOP。常用函数如kill()、raise()、alarm()和pause()用于信号发送和捕捉。Signal()用于注册信号处理方法,如设置为SIG_IGN忽略信号或SIG_DFL使用默认处理。
摘要由CSDN通过智能技术生成

信号是在软件测上对中断机制的一种模拟是一种异步通信方式,信号可以直接进行用户空闲进程和内核进程之间的交互,内核进程也可以利用他来通知用户控件进程发生了哪些系统事件。如果该进程当前未处于执行态,则该信号由内核保存起来,直到该进程恢复执行再传递给它;如果一个信号被进程设置为阻塞,则该信号的传递被延时,直到其阻塞被取消时才被传递给进程
信号的生存周期:
由内核产生,将信号发送给用户进程,用户进程进行信号注册(signal将信号和执行方式关联起来)->信号处理->信号注销
信号的处理方式
忽略信号:对信号不做任何处理,但是有两个信号不能忽略:即SIGKILL和SIGSTOP
捕捉信号:定义信号处理函数,当信号发生时,执行相应的处理函数
执行缺省操作:linux对每种信号都规定了默认操作
信号处理流程
在这里插入图片描述

使用信号的场合
后台进程需要使用信号
两个进程之间没有亲缘关系,无法使用无名管道
如果两个通信进程之一只能使用标准输入和标准输出,则无法使用FIFO
信号的发送和捕捉
Kill():
函数原型:int kill(pid_t pid, int sig)
其中 pid=正数:要接受信号量的进程的进程号
Pid=0: 信号量被发送到所有和pid进程在同一进程组的进程
Pid=1: 信号发送给所有进程表中的进程(进程号最大的除外:1)
r

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值