幾種進程間的通訊方式socket
(1) 管道(pipe):管道是一種半雙工的通訊方式,數據只能單向流動,並且只能在具備血緣關係的進程間使用。進程的血緣關係一般指父子進程關係。線程
(2)有名管道(named pipe):有名管道也是半雙工的通訊方式,可是它容許無親緣關係進程間通訊。設計
(3)信號量(semophore):信號量是一個計數器,能夠用來控制多個進程對共享資源的訪問。它一般做爲一種鎖機制,防止某進程正在訪問共享資源時,其餘進程也訪問該資源。所以,主要做爲進程間以及同一進程內不一樣線程之間的同步手段。接口
(4)消息隊列(message queue):消息隊列是由消息組成的鏈表,存放在內核中 並由消息隊列標識符標識。消息隊列克服了信號傳遞信息少,管道只能承載無格式字節流以及緩衝區大小受限等缺點。隊列
(5)信號(signal):信號是一種比較複雜的通訊方式,用於通知接收進程某一事件已經發生。進程
(6)共享內存(shared memory):共享內存就是映射一段能被其餘進程所訪問的內存,這段共享內存由一個進程建立,但多個進程均可以訪問,共享內存是最快的IPC方式,它是針對其餘進程間的通訊方式運行效率低而專門設計的。它每每與其餘通訊機制,如信號量配合使用,來實現進程間的同步和通訊。事件
(7)套接字(socket):套接口也是一種進程間的通訊機制,與其餘通訊機制不一樣的是它能夠用於不一樣及其間的進程通訊。ip