news 2026/5/12 17:56:58

信号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/5/6 14:07:01

从合规到实战:企业安全建设的合规检查落地指南与风险规避策略

一、安全合规检查的核心价值&#xff1a;不止于“满足监管”&#xff0c;更是“安全筑基” 在数字化转型加速的当下&#xff0c;企业安全合规检查早已脱离“应付检查”的浅层认知&#xff0c;成为构建企业纵深防御体系的核心抓手。对于企业而言&#xff0c;合规检查的价值体现在…

作者头像 李华
网站建设 2026/5/9 5:36:52

LangFlow在AIGC领域的10种创新应用场景

LangFlow在AIGC领域的10种创新应用场景 在生成式AI&#xff08;AIGC&#xff09;迅速渗透各行各业的今天&#xff0c;一个核心矛盾日益凸显&#xff1a;大语言模型&#xff08;LLM&#xff09;的能力越来越强&#xff0c;但将其落地为可用产品的门槛却依然高得令人望而却步。开…

作者头像 李华
网站建设 2026/5/12 10:39:40

LangFlow日志记录功能配置说明

LangFlow日志记录功能配置说明 在构建复杂的AI工作流时&#xff0c;一个常见的挑战是&#xff1a;当流程运行异常或性能不佳时&#xff0c;我们往往只能看到“前端无输出”或“响应缓慢”这类模糊现象。尤其是在使用可视化工具如 LangFlow 进行快速原型开发的过程中&#xff0c…

作者头像 李华
网站建设 2026/5/7 4:20:17

SGLang AI 金融 π 对(杭州站)回顾:大模型推理的工程实践全景

12 月 20 日&#xff0c;SGLang AI 金融 π 对&#xff08;杭州站&#xff09;在杭州紫金港美居酒店成功举办。本次 Meetup 由 SGLang 与 AtomGit 社区联合发起&#xff0c;聚焦大模型在金融与复杂业务场景下的推理效率问题&#xff0c;吸引了大量来自 AI Infra、推理系统、金融…

作者头像 李华
网站建设 2026/5/4 9:09:24

Solana钓鱼攻击中Owner权限滥用机制与防御体系研究

摘要近年来&#xff0c;随着高性能区块链平台Solana生态的快速扩张&#xff0c;其独特的账户与权限模型在提升交易效率的同时&#xff0c;也引入了新型安全风险。2024年末至2025年初&#xff0c;多起针对Solana用户的钓鱼攻击事件造成数百万美元资产损失&#xff0c;其核心攻击…

作者头像 李华
网站建设 2026/5/9 12:45:27

能源管理系统(开源):打造智能高效的能源管控新模式

温馨提示&#xff1a;文末有资源获取方式~能源系统|能源系统源码|企业能源系统|企业能源系统源码|能源监测系统一、Java 与能源管理系统的邂逅​能源管理系统的核心使命在于实现能源的精细化管控。它通过实时收集各类能源数据&#xff0c;如电力、燃气、水、热能等的消耗情况&a…

作者头像 李华