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