| 目的 | 描述 | 典型機制 |
|---|---|---|
| 數據傳輸 | 進程間移動數據 (1B~數 MB) | 管道、消息隊列、Socket |
| 共享數據 | 多進程訪問同一內存區,修改即時可見 | 共享內存 (shm) |
| 通知事件 | 異步通知對方發生事件 (如 SIGCHLD) | 信號、eventfd |
| 資源共享 | 多進程協訪共享資源,需同步互斥 | 信號量、互斥鎖、futex |
| 進程控制 | 完全控制另一進程執行 (調試器) | ptrace、/proc |
semget) / POSIX 命名/無名信號量 (sem_open, sem_init)。msgrcv 指定 type)。msgget) / POSIX (mq_open) 兩套 API。shmget) / POSIX (shm_open + mmap) / memfd_create (Linux 3.17+)。需要雙向、高性能、傳遞 FD? → Unix Domain Socket 需進程間共享大塊數據、極致延遲? → 共享內存 + 信號量/futex 簡單異步通知、定時器? → 信號 / eventfd / timerfd 結構化消息、持久化、優先級? → POSIX 消息隊列 父子進程簡單數據流? → 匿名管道 跨網絡/機器? → TCP/UDP Socket
libuv, Boost.Interprocess, ZeroMQ, gRPC 等,屏蔽底層細節。IPC 無銀彈,需根據數據量、延遲要求、同步需求、進程關係、可移植性綜合選型。現代 Linux 開發建議以 Unix Domain Socket + 共享內存 為主力組合,輔以 eventfd/timerfd/signalfd 處理異步事件。