管道
管道是?種把兩個進程之間的標準輸入和標準輸出連接起來的機制,可分為?名管道和有名管道,?于 具有親緣關系進程間的通信。有名管道克服了沒有名字的限制,因此允許?親緣關系進程間的通信。
特點
①只能在有親緣關系的進程之間進?通信,也就是在??進程之間通信 ②單向通信,?個讀端,?個寫端。如果要雙向通信就要建立兩個管道 ③接收數據流,與數據格式?關 ④?般??,進程退出時管道即被釋放,因此管道的?命周期會隨進程的關閉?消亡 ⑤同步互斥原則,內核會對管道操作進?同步和互斥
?名管道參考
有名管道讀操作參考
有名管道寫操作參考
信號
信號機制是UNIX系統中最為古老的進程之間通信機制。它?于?個進程或多個進程之間傳遞異步信號, 來通知進程有某種事件發?,除了?于進程間通信外,使?信號還可以使進程發送信號給進程本?。信號參考
消息隊列
消息隊列是內核地址空間中的消息的鏈表,通過Linux內核在進程之間傳遞內容。消息順序地發送到消息 隊列中,并以?種不同的?式從隊列中獲取,每個消息隊列可以?IPC標識符唯?的進?標識。不同的消 息隊列之間是相互獨立的,每個消息隊列中的消息構成?個獨立的鏈表。有寫權限的進程可以對消息隊 列添加消息,有讀權限的進程可以對消息隊列讀取信息
特點
①消息隊列克服了信號承載信息量少,管道只能承載?格式字節流以及緩沖區??受限的缺點。 消息隊列 是基于消息的,?管道是基于字節流的,且消息隊列的讀取不?定先入先出
②消息隊列中每個消息的最??度是有上限的,每個消息隊列的總的字節數也是有上限的,系統 上消息隊 列的總數也有?個上限
消息隊列讀參考
消息隊列寫參考
共享內存
共享內存是在多個進程之間共享?塊內存區域的?種進程間的通信?式,它是通過在多個進程之間對內 存段進?映射的?式來實現共享內存的,是進程間通信最快捷的?式,之所以最快,是因為共享內存? 式的通信沒有中間過程,?管道、消息隊列等?式則是需要將數據通過中間機制進?轉換。共享內存往 往與其他通信機制(如信號量)結合使?,來達到進程間的同步及互斥
特點
①共享內存就是允許兩個不相關的進程訪問同?個內存 ②共享內存是兩個正在運?的進程之間共享和數據的最有效的?式 ③共享內存不提供任何互斥和同步機制,?般?信號量對臨界資源進?保護 ④不同進程之間共享的內存通常安排為同?段物理內存
共享內存讀參考
共享內存寫參考
信號量
信號量是?種計數器,?來控制對多個進程共享的資源所進?的訪問,它們常常被?作?個鎖機制,在 某個進程正在對特定資源進?操作時,信號量可以防?另?個進程去訪問它。簡單來說就是信號量是? 個特殊的變量,程序對其訪問都是原?操作,且只允許對它進?P(申請)V(釋放)操作
socket
最為?般的進程間通信機制???于不同機器之間的不同進程之間的通信