进程间通信(二十一)——信号机制:signal

本文详细介绍了Linux中的信号机制signal,包括信号的基本概念、来源、进程对信号的处理方式以及相关的系统调用接口。信号作为异步通信的IPC方式,用于通知进程发生了特定事件。信号的处理包括默认行为、忽略或捕获执行handler。文章讨论了kill、pause、alarm和setitimer等信号处理API的使用,展示了如何通过这些接口进行进程间的交互和控制。
摘要由CSDN通过智能技术生成

信号机制:signal

信号的基本概念

信号(signal)

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

信号的来源

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

一个进程对信号的处理方式

  • 缺省行为
    • 忽略信号:如SIGIGN、SIGCHLD
      • SIGKILL/SIGSTOP比较特殊,不能忽略,所有进程都要在OS管控之下
    • 终止进程:SIGTERM、SIGINT、SIGHUP
    • 终止进程并内核转储:SIGBUS、SIGABRT、SIGQUIT
  • 捕获信号并执行信号注册的handler
    • 通过signal系统调用可以改变信号的处理行为,即注册新的handler</
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值