Linux下進程間通信大致有以下幾種:
1.socket
2.管道(包括匿名管道適用於父子進程,命名管道)
3.信號量
4.共享內存
5.消息隊列
1.socket
socket可以用於本地進程間通信也可以用於遠程間,是最常用的。
2.管道--匿名管道
一般用pipe創建,在父子間通信。在父進程中關閉讀/寫管道,在子進程中關閉寫/讀管道。
2.管道--命名管道
一般用mkfifo來創建。如果沒有說明管道是非阻塞的,那麼一個為讀打開的管道將阻塞直到有進程為寫打開此FIFO。同樣如果為寫打開的管道將阻塞直到有進程為讀打開此FIFO。
3.信號量
一個進程可以用kill發送信號至另外一個進程。
4.共享內存
使用函數:shmget、shmat、shmctl、shmdt
用shmget函數得到一塊內存,並用shmat設置為允許本進程使用這塊共享內存。使用完以後用shmdt刪除內存塊。
5.消息隊列
使用函數:msgget、msgsnd、msgrcv、msgctl
使用步驟同上