1. 信號
進程間的軟件中斷通知和處理機制。
信號的接收處理:
- 捕獲:執行進程指定的信號處理函數被調用。
- 忽略:執行進程指定的缺省處理。
- 屏蔽:禁止進程接收和處理信號。
不足:傳送的信息量小,只有一個信號類型。
2. 管道
進程間基於內存文件的通信機制,子進程從父進程繼承文件描述符,缺省文件描述符:0 stdin,1 stdout,2 stderr。
相關的系統調用:
- 讀管道:read(fd,buffer,nbytes),scanf()是基於它實現的。
- 寫管道:write(fd,buffer,bbytes),printf()是基於它實現的。
- 創建管道:pipe(fgfd)。fgfd 是2個文件描述符組成的數組,rgfd[0]是讀文件描述符,rgfd[1]是寫文件描述符。
示例:
3. 消息隊列
由操作系統維護的以字節序列爲基本單位的間接通信機制,消息隊列獨立於創建它的進程。
4. 共享內存
把同一個物理內存區域同時映射到多個進程的內存地址空間的通信機制。
優點:快速方便,不足:必須用額外的同步機制來協調數據訪問。
5. 套接字
與其它通信機制不同的是,它可用於不同機器間的進程通信。