linux 進程間通訊方式


管道:編程

  它包括無名管道和有名管道兩種,前者用於父進程和子進程間的通訊,後者用於運行於同一臺機器上的任意兩個進程間的通訊
消息隊列:socket

  用於運行於同一臺機器上的進程間通訊,它和管道很類似,是一個在系統內核中用來保存消息的隊列,它在系統內核中是以消息鏈表的形式出現。消息鏈表中節點的結構用msg聲明。
共享內存:函數

  共享內存是運行在同一臺機器上的進程間通訊最快的方式,由於數據不須要在不一樣的進程間複製。一般由一個進程建立一塊共享內存區,其他進程對這塊內存區進行 讀寫。
獲得共享內存有兩種方式:映射/dev/mem設備和內存映像文件。 前一種方式不給系統帶來額外的開銷,但在現實中並不經常使用,因 爲它控制存取的將是 實際的物理內存,在Linux系統下,這隻有限制Linux系統存取的內存才能夠作到,這固然不太實際。經常使用的方式是經過shmXXX函數族來實現利 用共享內存進行存儲的。
信號量:操作系統

  信號量又稱爲信號燈,它是用來協調不一樣進程間的數據對象的,而最主要的應用是前一節的共享內存方式的進程間通訊。本質上,信號量是一個計數器,它用來記錄對某個資源(如共享內存)的存取情況。
套接口(socket)編程:對象

  是實現Linux系統和其餘大多數操做系統中進程間通訊的主要方式之一。咱們熟知的WWW服務、FTP服務、TELNET服務 等都是基於套接口編程來實現的。除了在異地的計算機進程間之外,套接口一樣適用於本地同一臺計算機內部的進程間通訊接口

相關文章
相關標籤/搜索