進程間的通信方式
1.管道
管道是一種半雙工通信方式,一次只能向一邊傳輸,而且使用的進程必須具有親緣關系
2.命名管道
也是一種半雙工的通信方式,但可以在不具有親緣關系的進程中使用
3.信號
通知接收線程某一事件已經發生,用於不同進程間或者同一進程間的不同線程
4.信號量
是一個計數器,用於限制線程對某一共享資源的訪問,比如某一線程正在訪問某一共享資源,其他線程不能訪問
5.消息隊列
消息隊列是消息的鏈表,存放於內核中,一個消息隊列由唯一一個隊列id
客服了信號傳遞信息少,管道只能承載無格式字節流(無格式字節流:沒有邊界,沒有結束標識,上一條和下一條無法區分)以及緩沖區小的的缺點
6.共享內存
指兩個或者多個進程共享一個給定的存儲區
7.套接字
也是一種通信機制,用於不同進程之間的進程通信
進程通信的目的:
1.數據傳輸
一個進程要將它的數據發送給另一個進程
2.資源共享
多個進程之間共享資源
3.通知事件
一個進程需要通知另一個進程某一個事件已經發生
4.進程控制
有些進程希望控制另一個進程的執行(如Debug進程),此時控制進程希望攔截另一個進程的所有陷入和異常,並能夠及時知道它的狀態改變