news 2026/8/21 21:20:04

信号VS共享内存:进程通信谁更强?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
信号VS共享内存:进程通信谁更强?

信号机制与共享内存的对比分析

信号机制

信号是Linux系统中用于异步通信和事件通知的机制,适用于随机事件处理。其核心流程包括信号发送、接收和处理:

  1. 信号发送
    使用kill函数向目标进程发送信号:

    int kill(pid_t pid, int sig); // pid为目标进程ID,sig为信号编号(如SIGINT=2)
  2. 信号处理
    进程通过signal函数注册自定义处理逻辑:

    typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler);
    • SIG_DFL:恢复默认处理(如SIGINT默认终止进程)。
    • SIG_IGN:忽略信号。
    • 自定义函数:实现特定事件响应。
  3. 执行流程
    内核收到信号后暂停进程当前执行流,跳转到注册的处理函数,完成后恢复原流程。

共享内存

共享内存是进程间通信(IPC)的高效方式,直接映射内存区域供多进程读写:

  1. 创建共享内存
    通过ftok生成唯一键值,shmget申请内存:

    key_t ftok(const char *pathname, int proj_id); int shmget(key_t key, size_t size, int shmflg); // size为内存大小,shmflg如IPC_CREAT
  2. 映射与操作
    使用shmat映射到进程地址空间:

    void *shmat(int shmid, const void *shmaddr, int shmflg); // shmaddr=NULL由系统分配

    数据操作示例:

    memcpy(shm_ptr, data, size); // 二进制数据拷贝
  3. 清理资源
    断开映射并删除对象:

    shmdt(shm_ptr); // 撤销映射 shmctl(shmid, IPC_RMID, NULL); // 删除共享内存
信号与共享内存的差异
  • 通信方式
    信号是异步事件通知,共享内存是同步数据共享。

  • 阻塞行为
    共享内存无读写阻塞,需搭配信号/信号量实现同步;信号处理可能被中断。

  • 数据持久性
    共享内存数据持久化直至显式删除;信号仅传递事件无数据存储。

  • 应用场景
    信号适合轻量级事件通知(如进程终止);共享内存适合大数据量交换(如图像处理)。

系统命令
  • 查看IPC资源:ipcs -a
  • 删除共享内存:ipcrm -m <shmid>

通过合理选择机制,可高效实现进程间协作与数据交互。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 9:02:47

计算机毕业设计|基于springboot + vue职位管理推荐系统(源码+数据库+文档)

职位推荐系统 目录 基于springboot vue职位推荐系统 一、前言 二、系统功能演示 详细视频演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于springboot vue职位推荐系统 一、前言 博主介绍…

作者头像 李华
网站建设 2026/8/20 12:41:08

云迁移安全决胜之道:企业全业务上云的战略布局与风险防控指南

在数字化转型的深水区&#xff0c;企业上云早已从“试水”阶段迈入“全面攻坚”的关键期。当核心业务、敏感数据、全链路流程向云端迁移时&#xff0c;安全不再是“附加项”&#xff0c;而是决定迁移成败的核心命脉。不同于零散系统的上云实践&#xff0c;企业整体业务上云涉及…

作者头像 李华
网站建设 2026/8/22 2:31:55

LangFlow多语言支持能力测试报告

LangFlow多语言支持能力测试报告 在AI应用加速走向全球化的今天&#xff0c;如何让非英语开发者也能高效参与大模型项目&#xff0c;正成为低代码平台必须面对的挑战。LangFlow作为LangChain生态中炙手可热的图形化工具&#xff0c;凭借“拖拽即用”的特性迅速吸引了大量用户。…

作者头像 李华
网站建设 2026/8/21 18:56:15

基于springboot + vue旅游网系统

旅游网系统 目录 基于springboot vue旅游网系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于springboot vue旅游网系统 一、前言 博主介绍&#xff1a;✌️大厂…

作者头像 李华
网站建设 2026/8/22 0:59:56

LangFlow结合Prompt工程的最佳实践方法

LangFlow 结合 Prompt 工程&#xff1a;构建高效 AI 应用的可视化实践 在大语言模型&#xff08;LLM&#xff09;迅速渗透各行各业的今天&#xff0c;越来越多团队面临一个共同挑战&#xff1a;如何快速、可靠地将强大的语言能力转化为可落地的应用&#xff1f;传统的开发方式依…

作者头像 李华
网站建设 2026/8/21 14:25:28

基于Evilginx的高校MFA绕过攻击机制与防御体系研究

摘要多因素认证&#xff08;MFA&#xff09;长期被视为抵御凭证窃取的核心防线&#xff0c;然而近年来以“中间人”&#xff08;Adversary-in-the-Middle, AiTM&#xff09;为代表的高级钓鱼技术正系统性削弱其有效性。2025年末&#xff0c;Infoblox威胁情报团队披露了一起针对…

作者头像 李华