進程間通信方式(簡)

進程間的通訊方式

進程間通訊,即進程之間傳播或者交換信息。在系統中,進程的用戶空間都是相對獨立的,一般來說不能相互訪問,要實現進程之間的通信,總體上,有以下幾種方式:

  • 管道 ( pipe )
  • 系統IPC ( 消息隊列、信號、共享傳輸)
  • 套接字 ( Socket )

管道

普通管道(pipe)
數據只能單向傳輸
只能在有親緣關係的進程間使用
可以看作一種只存在於內存中的特殊的文件 允許通過普通的 write()、read() 等函數來讀寫
流管道 (s_pipe)
在普通管道的基礎之上 允許雙向傳輸
命名管道(name_pipe)
能在不相關進程間通訊 但是不能雙向傳輸
以 FIFO 的方式存在於文件系統中
總是以 first in first out 的方式進行數據讀取

系統IPC

信號
生命週期-生成與傳送
信號到來到進程對信號處理之間 信號在進程上掛起
內核爲進程生產信號來響應不同的事件 並用一個字來代表信號 每個信號佔一位 因此一個字的位數就是系統可以支持的最多信號種類數
信號沒有固定的優先級
消息隊列 - 消息的鏈表
存放在內核中 並由消息隊列標識符表示
克服了信號傳遞信息少
管道只能承載無格式字節流以及緩衝區大小受限等特點
共享內存 - 映射一段能被其他進程訪問的內存
由一個進程創建
是最快的IPC通信方式 針對其他進程間通信方式運行效率低二設計 可與其他通信機制配合使用

套接字(Socket)

可用於不同進程及其間進程的通信

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章