linux多进程通讯---signal 信号机制

本文深入探讨了Linux系统中的信号机制,包括基本概念、信号来源、进程对信号的处理方式以及signal、kill、pause、alarm和setitimer等系统调用的详细使用,通过实例代码展示了如何在多进程中实现信号的发送与接收。
摘要由CSDN通过智能技术生成

基本概念

•又叫:软中断信号,是一种异步通信的IPC
•类似于硬件中断,可以将一个事件以信号形式通知给进程
•给一个指定进程发送一个信号
–信号只是告诉进程发生了什么事,并不传递数据
–进程表的表项中有一个软中断信号域,有信号发给该进程,对应位置位
–进程根据接收信号类型作相应的处理

信号的来源

•来自shell终端用户输入的各种信号:ctrl + C/D
•来自其它进程或者进程本身发送的信号
•来自系统内部的信号
–硬件异常:如SIGBUS表示总线错误、SIGSEGV表示段错误
–终端相关的信号
–软件事件相关的信号

进程对信号的处理方式

–缺省行为
•忽略信号:如SIGIGN、SIGCHLD
–SIGKILL/SIGSTOP比较特殊,不能忽略,所有进程都要在OS管控之下
•终止进程:SIGTERM、SIGINT、SIGHUP
•终止进程并内核转储:SIGBUS、SIGABRT、SIGQUIT
–捕获信号并执行信号注册的handler
•通过signal系统调用可以改变信号的处理行为,即注册新的handler
•当有信号到来时,信号的处理类似于中断程序
•暂停当前进程正在执行的代码、跳到注册的回调函数handler执行
•函数返回,回到当前进程捕获信号的地方继续执行
•若该信号没有注册回调函数,采用默认操作:忽略或终止进程

信号相关API

•typedef void (*sighandler_t)(int);
•sighandler_t signal (int signum, sigha
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值