• 进程间通信-信号概述


    一、信号的概念

            信号是一种进程间通信的机制,用于在软件层面上对异步事件进行通知。信号通常是由操作系统或其他进程发送给目标进程的一种通知,以指示发生了某种事件或条件。这样的事件可能包括硬件异常、用户输入、定时器到期、子进程状态变化等。

    引发内核为进程产生信号的各类事件如下:
    对于前台进程,用户可以通过输入特殊的终端字符来给它发送信号。比如输入 Ctrl+C
    通常会给进程发送一个中断信号。
    硬件发生异常,即硬件检测到一个错误条件并通知内核,随即再由内核发送相应信号给
    相关进程。比如执行一条异常的机器语言指令,诸如被 0 除,或者引用了无法访问的
    内存区域。
    系统状态变化,比如 alarm 定时器到期将引起 SIGALRM 信号,进程执行的 CPU
    时间超限,或者该进程的某个子进程退出。
    运行 kill 命令或调用 kill 函数。

    二、使用信号目的

    1. 让进程知道已经发生了一个特定的事情: 信号是一种通知机制,用于通知进程发生了特定的事件或条件。这可以是用户输入、硬件异常、定时器到期等。进程在收到信号后可以采取相应的行动。

    2. 强迫进程执行它自己代码中的信号处理程序: 进程可以为特定信号注册信号处理函数。当进程接收到相应信号时,会执行与该信号关联的处理函数,从而允许进程采取定制的行动来应对信号

    三、 信号特点

    • 简单: 信号是一种轻量级的通信机制,它们提供了一种快速的方式来通知进程发生了某个事件,而不需要复杂的通信协议。

    • 不能携带大量信息: 信号通常只能携带有关事件的少量信息。它们不适用于传递大块的数据。

    • 满足某个特定条件才发送: 信号通常在某个条件满足时才会被发送,例如按下特定的键盘组合、硬件异常等。

    • 优先级比较高: 信号通常有不同的优先级,某些信号可能具有比其他信号更高的紧急性,例如强制终止信号(SIGKILL)。

    • 在Unix中,可以使用命令kill -l来列出系统定义的信号,以及它们的编号。前31个信号是常规信号,而其余的是实时信号。

     四、信号

     五、信号五种默认动作以及三种状态

    默认处理动作:

    1. Term(终止进程): 进程会被正常终止。
    2. Ign(忽略信号): 进程会忽略掉这个信号,不做任何响应。
    3. Core(终止进程,并生成一个core文件): 进程会被终止,并在当前工作目录生成一个核心转储文件(core dump)。
    4. Stop(暂停当前进程): 进程会被暂停,等待被其他信号唤醒。
    5. Cont(继续执行当前被暂停的进程): 如果进程之前被暂停,使用该信号可以继续执行。

    信号的几种状态:

    1. 产生: 信号从发出源处产生,但尚未传递给接收者。
    2. 未决: 信号已经发出并且到达了接收者,但接收者尚未处理它。
    3. 递达: 信号已被接收者处理。

    关于SIGKILL和SIGSTOP的特殊性:

    • SIGKILL(终止信号)SIGSTOP(暂停信号) 是两个特殊的信号,它们不能被捕捉(handled)、阻塞(blocked)或者忽略(ignored),只能执行默认动作。这是为了确保系统管理员能够终止或暂停进程,而进程无法阻止或忽略这些操作。

  • 相关阅读:
    c 语言基础:L1-049 天梯赛座位分配
    TensorBoard——Pytorch版使用(附带案例演示)
    技术管理进阶——什么是影响力
    点云从入门到精通技术详解100篇-基于光谱共焦系统的三维点云数据处理(中)
    深度学习落地实战:基于UNet实现血管瘤超声图像分割
    un7.28:redis客户端常用命令。
    2022/7/30周总结
    【TypeScript】类、类的属性及抽象类(七)
    等保备案主体是谁?在当地网安进行备案是吗?
    计算机毕业设计选题推荐-个人博客微信小程序/安卓APP-项目实战
  • 原文地址:https://blog.csdn.net/leimeili/article/details/133660337