欢迎访问 内存溢出 —— 独立后端与系统工程技术博客

专注于分布式系统、Linux内核、数据库存储与后端工程实践

Linux 进程间通信:管道、共享内存与 Unix Domain Socket

发表于:|最后更新:|分类:Linux与网络|阅读:6817 次
本文标签:LinuxIPC进程通信

Linux 提供多种进程间通信(IPC)机制,不同方案在性能、同步复杂度与使用场景上差异显著。

一、主要 IPC 机制对比

机制 方向 性能 典型场景
匿名管道 单向 中 父子进程简单通信
命名管道(FIFO) 单向 中 无亲缘关系进程
共享内存 双向 最高 大数据量高频交换
Unix Domain Socket 双向 高 本机服务通信
消息队列 双向 中 结构化消息传递

二、共享内存示例

c
int shm_fd = shm_open("/my_shm", O_CREAT | O_RDWR, 0666);
ftruncate(shm_fd, 4096);
void *ptr = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, shm_fd, 0);

共享内存本身不提供同步,必须配合信号量或互斥锁使用。Unix Domain Socket 因绕过网络协议栈,在本机 RPC 场景下性能优于 TCP 回环。