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















 
 
 









 
 
 
 