在 Linux 中,进程间通信(IPC,Inter-Process Communication)有多种方式,常用于不同场景。下面按常见程度和典型用途给你系统梳理一下。
pipe() 创建int fd[2];
pipe(fd);
// fd[0] 读,fd[1] 写
特点:
|mkfifo)mkfifo myfifo
open("myfifo", O_RDONLY);
SIGKILL、SIGINT、SIGCHLDkill(pid, SIGUSR1);
特点:
shmget();
shmat();
常配合:
适合:
msgget();
msgsnd();
msgrcv();
特点:
semget();
semop();
常见于:
socket(AF_UNIX, SOCK_STREAM, 0);
优点:
缺点:
| 方式 | 速度 | 是否跨机 | 典型用途 |
|---|---|---|---|
| 管道 | 中 | 否 | shell、父子进程 |
| 信号 | 快 | 否 | 控制、通知 |
| 共享内存 | 最快 | 否 | 大数据 |
| 消息队列 | 中 | 否 | 结构化消息 |
| 信号量 | 快 | 否 | 同步 |
| Socket | 中 | 是 | 通用、网络 |
如果你愿意,我可以:
你想深入哪一块?