当前位置: 首页 > news >正文

linux shell操作 - 04 进程间通信

文章目录

  • Signal 信号
    • 信号定义
    • 信号的生命周期
    • 信号分类
    • linux进程通信案例

Signal 信号

信号定义

  1. Linux信号是进程间通信的一种方式,通过向目标进程发送一个特定的信号,让其执行相应的处理操作;

  2. 向目标进程发送信号时,内核会将信号添加到目标进程的信号队列中,且每个进程都有一个信号表来表示该进程对不同信号的处理情况。

信号的生命周期

Linux信号生命周期是指信号的产生、传递、处理和终止的整个过程。

  • 信号的产生可以由多种事件触发,当一个事件发生时,内核会为每个进程确定一个目标信号,并将其发送给相应的进程。

  • 信号传递是指信号从一个进程传递到另一个进程中。在传递过程中,信号可以被阻塞或者被忽略、信号处理函数进行处理。

  • 信号处理是指目标进程对信号的响应行为。比如终止进程、忽略信号、自定义信号处理函数来处理信号。

  • 信号的终止是指信号处理函数执行完成,进程恢复到正常执行状态。

信号分类

  • Linux一共64种信号,每一个信号都有唯一整数值;又可以分为两类:可靠、不可靠;

  • 不可靠信号又称非实时信号,是指在信号传递过程中可能丢失或产生不可预测行为的信号,1-31号信号为不可靠信号。

  • 可靠信号又称实时信号,是保证传递和处理的信号。当一个进程接收到可靠信号时,系统会确保该信号不会丢失,并且会等待进程处理完该信号后再继续执行其他操作,Linux使用队列来保存待处理的信号,保证它们按照接收的顺序被进程处理。34-64号信号为可靠信号。

  • 执行kill -l 可以查看所有的信号;

  • 执行信号的处理动作称为信号递达(Delivery);
    信号从产生到递达之间的状态,称为信号未决(Pending);
    信号阻塞,被阻塞的信号将保持在未决状态;

linux进程通信案例

  1. 编写shell 脚本proc1.sh,使用trap注册handler函数与一个信号;然后执行proc1.sh 并进入事件循环。
  2. 编写shell脚本proc2.sh,使用kill -s SIGINT pid 向proc1.sh进程发送注册的信号,查看proc1.sh中handler函数是否执行。
在这里插入代码片
http://www.lryc.cn/news/240773.html

相关文章:

  • 【Java并发】聊聊线程池原理以及实际应用
  • 自然语言处理常用方法和评价指标
  • FFmpeg常用命令行讲解及实战一
  • Java的ArrayList中关于删除的常用操作及方法
  • 低成本打造便携式无线网络攻防学习环境
  • Qt|QLabel显示刷新图像数据
  • Java类加载那些事
  • QSplitter分裂器
  • pgsql 时区查看和修改
  • el-table 表格表头、单元格、滚动条样式修改
  • dockerDesktop使用方法
  • [Ubuntu]RT810xE--网线已拔出--问题解决
  • 美国DDoS服务器:如何保护你的网站免遭攻击?
  • R语言数据缩放-1到1
  • C语言第二十五弹--打印菱形
  • PyTorch微调终极指南1:预训练模型调整
  • Uptime Kuma 企业微信群机器人告警
  • 【网络安全】-网络安全的分类详解
  • php利用ZipArchive类实现文件压缩与解压
  • Java面试附答案:掌握关键技能,突破面试难题!
  • API自动化测试:如何构建高效的测试流程
  • 字母异位词分组
  • SAP_ABAP_面试篇_关于Function Module函数的三种处理类型
  • CentOS简介、ISO类型、CentOS7安装与配置以及远程连接。
  • Audition 2024 24.0.0.46(音频剪辑)
  • Hive小文件处理
  • go语言学习之旅之Go语言函数
  • mysql的联合索引最左匹配原则问题
  • 三层交换机实现不同VLAN间通讯
  • C#枚举的使用