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

信号——进程间通信(20250225)

1. 信号

        管道:进程间数据通信(同步通信)

        信号:进程间通信,用来发送通知(异步通信,中断)

        1)同步通信:发送端和接收端,使用同一时钟通信
              异步通信:发送端和接收端使用不同时钟通信

        2)同步通信:按照指定的顺序进行运行
              异步通信:一种随机事件,在程序编写阶段不能够确定事件发生的时机

2. 常用信号

        2) SIGINT:ctrl + c 
        让一个进程被打断
        3) SIGQUIT:ctrl + \
        让一个进程结束
        9) SIGKILL:
        强制让一个进程结束
        11)SIGSEGV:
        让一个进程结束(段错误)
        13)SIGPIPE:
        让一个进程结束(管道破裂)
        14)SIGALRM:
        让一个进程结束(定时时间到达)
        17)SIGCHLD:
        子进程结束时发送给父进程
        18)SIGCONT:
        让停止态的进程继续执行
        19)SIGSTOP:
        让运行态的进程进入停止态(暂停)强制停止
        20)SIGTSTP:
        ctrl + z   让进程进入暂停态,后台进程
        来自终端的停止信号

3. 用户自定义信号

        10)SIGUSR1
        12)SIGUSR2

4. 管理员信号(无法被捕获和忽略)

        9)SIGKILL
        19)SIGSTOP 

5. 信号发送方

        kill:给指定进程发发送信号
        raise:给自己(进程)发信号
        alarm:若干秒后发生SIGNALRM信号
        pause:挂起

6. 信号接收方

6.1 信号类型

        1)忽略:不处理
        2)捕获:按照用户自定义方式处理
        3)缺省:按照信号默认方式处理

信号的框架设计

(信号的接收方)注册信号--->发送信号--->处理信号(注册的信号处理函数)

6.2 注册信号处理函数

        signal
                typedef void (*sighandler_t)(int);
                sighandler_t signal(int signum, sighandler_t handler);

功能:
        注册一个信号并设置信号的处理方式
        参数:
        signum:信号的编号
        handler:信号的处理方式  捕获
                SIG_IGN  忽略
                SIG_DFL  缺省
                信号对应的处理函数地址
        返回值:
                成功返回上一次注册的信号处理函数
                失败返回SIG_ERR 

http://www.lryc.cn/news/542778.html

相关文章:

  • transformer架构嵌入层位置编码之动态NTK-aware位置编码
  • 东信营销科技巨额补贴仍由盈转亏:毛利率大幅下滑,现金流告急
  • [电感、磁珠、0欧姆电阻]的区别与应用特性
  • 车载诊断架构 --- LIN节点路由转发注意事项
  • 前端 AJAX 二、AJAX使用
  • Windows - 通过ssh打开带有图形界面的程序 - 一种通过计划任务的曲折实现方式
  • Android ViewStub延迟初始化加载布局View,Kotlin
  • Web自动化之Selenium下Chrome与Edge的Webdriver常用Options参数
  • 数据安全_笔记系列05:数据合规与隐私保护(GDPR、CCPA、中国《数据安全法》)深度解析
  • AF3 DataPipeline类process_multiseq_fasta 方法解读
  • 中国的Cursor! 字节跳动推出Trae,开放Windows版(附资源),开发自己的网站,内置 GPT-4o 强大Al模型!
  • 图片爬取案例
  • Go语言中的信号量:原理与实践指南
  • Qt如何将数据传入labview,Qt又如何从labview中读取数据?
  • vue3学习2
  • spring中手写注解开发(创建对象篇)
  • Android OpenGLES2.0开发(十一):渲染YUV
  • 在linux中利用conda安装blast
  • 三、多项式环
  • python unzip file
  • MySQL-增删改查
  • LeetCode 热题100 15. 三数之和
  • 网络空间安全(1)web应用程序的发展历程
  • ABAQUS功能梯度材料FGM模型
  • 自适应增强技术
  • 虚拟项目:一个好用的工具平台
  • MySQL 和 Elasticsearch 之间的数据同步
  • PS裁剪工具
  • [Web 安全] PHP 反序列化漏洞 —— PHP 序列化 反序列化
  • QT入门--QMainWindow