進程間通信的方式有哪些?
1、進程間通訊方式有:管道,信號,信號量,消息隊列,共享內存,套接字共六種
2、管道:管道分為有名管道和無名管道,其中無名管道是一種半雙工的通信方式,數據只能單向流動,而且只能在具有親緣關系的進程間使用,一般用於兩個不同進程之間的通信。有名管道也是一種半雙工的通信方式,但它允許無親緣關系進程間的通信。
3、信號:信號是一種比較復雜的通信方式,信號產生的條件:按鍵、硬件異常、進程調用kill函數將信號發送給另一個進程、用戶調用kill命令將信號發送給其他進程,傳遞的消息比較少用於通知接收進程某個時間已經發生
4、信號量:信號量是一個計數器,可以用來控制多個線程對共享資源的訪問,它不是用於交換大批數據,而用於多線程之間的同 步。他常作為一種鎖機制。因此,主要作為進程間以及同一個進程內不同線程之間的同步手段
5、消息隊列:消息隊列是消息的鏈表,存放在內核中並由消息隊列標識符標識,消息隊列克服了信號傳遞信息少,管道只能承載 無格式字節流以及緩沖區大小受限等特點。
6、共享內存:共享內存就是映射一段能被其他進程所訪問的內存,這段共享內存由一個進程創建,但多個進程都可以訪問。他往 往與其他通信機制,如信號量配合使用,來實現進程間的同步和通信。
7、套接字:套接字可用於不同及其間的進程通信。
流式套接字: 提供可靠的,面向連接的通訊流
數據包套接字: 定義一種無連接的服務,通過相互獨立的報文進行傳輸,是無序的
原始套接字: 用於新的網絡協議的測試
轉載自:https://blog.csdn.net/xiaonan153/article/details/81502245