linux進(jìn)程間通信主要分為以下4個(gè)領(lǐng)域
(1)消息傳遞(管道,F(xiàn)IFO,消息隊(duì)列)
(2)同步(互斥鎖,條件變量,讀寫鎖,信號(hào)量)
(3)共享內(nèi)存區(qū)(匿名共享內(nèi)存區(qū),有名共享內(nèi)存區(qū))
(4)過程調(diào)用(Solaris門,Sun RPC)
linux進(jìn)程間的信息共享可以分為
(1) 基于文件系統(tǒng)的共享
(2) 基于內(nèi)核的共享
(3) 基于共享內(nèi)存區(qū)的共享
IPC對象的持續(xù)性
(1)隨進(jìn)程間持續(xù)的IPC對象一直存在到打開著該對象的最后一個(gè)進(jìn)程關(guān)閉該對象的最后一個(gè)進(jìn)程關(guān)閉該對象為止。
(2)隨內(nèi)核持續(xù)的IPC對象一直存在到內(nèi)核重新自舉或顯式刪除該對象為止。
(3)隨文件系統(tǒng)持續(xù)的IPC對象一直存在到顯示刪除該對象為止。即使系統(tǒng)自舉了,該對象還是存在的。
IPC類型 持續(xù)性
管道 隨進(jìn)程
FIFO 隨進(jìn)程
Posix互斥鎖 隨進(jìn)程
Posix條件變量 隨進(jìn)程
Posix讀寫鎖 隨進(jìn)程
fcntl記錄上鎖 隨進(jìn)程
Posix消息隊(duì)列 隨內(nèi)核
Posix有名信號(hào)量 隨內(nèi)核
Posix基于內(nèi)存的信號(hào)量 隨進(jìn)程
Posix共享內(nèi)存區(qū) 隨內(nèi)核
System V消息隊(duì)列 隨內(nèi)核
System V信號(hào)量 隨內(nèi)核
System V共享內(nèi)存區(qū) 隨內(nèi)核
TCP套接字 隨進(jìn)程
UDP套接字 隨進(jìn)程
Unix域套接字 隨進(jìn)程
名字空間:
當(dāng)兩個(gè)或多個(gè)無親緣關(guān)系的進(jìn)程使用某種類型的IPC對象來彼此交換信息時(shí),該IPC對象必須有一個(gè)某種形式的名字或者標(biāo)識(shí)符,這樣其中一個(gè)進(jìn)程(往往是服務(wù)器)可以創(chuàng)建該IPC對象,其余進(jìn)程則可以指定同一個(gè)IPC對象。
IPC類型 用于打開或創(chuàng)建IPC的名字空間 IPC打開后的標(biāo)識(shí)
管道 沒有名字 描述符
FIFO 路徑名 描述符
Posix互斥鎖 沒有名字 pthread_mutex_t指針
Posix條件變量 沒有名字 pthread_cond_t指針
Posix讀寫鎖 沒有名字 pthread_rwlock_t指針
fcntl記錄上鎖 路徑名 描述符
Posix消息隊(duì)列 Posix IPC名字 mqd_t值
Posix有名信號(hào)量 Posix IPC名字 sem_t指針
Posix基于內(nèi)存的信號(hào)量 沒有名字 sem_t指針
Posix共享內(nèi)存區(qū) Posix IPC名字 描述符
System V消息隊(duì)列 key_t鍵 System V IPC標(biāo)識(shí)符
System V 信號(hào)量 key_t鍵 System V IPC標(biāo)識(shí)符
System V共享內(nèi)存區(qū) key_t鍵 System V IPC 標(biāo)識(shí)符
門 路徑名 描述符
sun RPC 程序/版本 RPC句柄
TCP套接字 IP地址與TCP 端口 描述符
UDP套接字 IP地址與UDP端口 描述符
Unix域套接字 路徑名 描述符