Linux下程序間通訊的六種機制詳解
linux下程序間通訊的幾種主要手段:
1.管道(Pipe)及有名管道(named pipe):管道可用於具有親緣關係程序間的通訊,有名管道克服了管道沒有名字的限制,因此,除具有管道所具有的功能外,它還允許無親緣關係程序間的通訊;
2.訊號(Signal):訊號是比較複雜的通訊方式,用於通知接受程序有某種事件生,除了用於程序間通訊外,程序還可以傳送訊號給程序本身;linux除了支援Unix早期 訊號語義函式sigal外,還支援語義符合Posix.1標準的訊號函式sigaction(實際上, 該函式是基於BSD的,BSD為了實現可靠訊號機制,又能夠統一對外介面,sigaction函式重新實現了signal函式);
3.報文(Message)佇列(訊息佇列)
4.共享記憶體:使得多個程序可以訪問同一塊記憶體空間,是最快的可用IPC形式。是針其他通訊機制執行效率較低設計的。往往與其它通訊機制,如訊號量結合使用, 來達到程序間的同步及互斥。
5.訊號量(semaphore):主要作為程序間以及同一程序不同執行緒之間的同步手段。
6.套接字(Socket):更為一般的程序間通訊機制,可用於不同機器之間的程序間通訊。起初是由Unix系統的BSD分支開發出來的,但現在一般可以移植到其它類Unix 系統上:Linux和System V的變種都支援套接字。
在此只列出六種方式的簡介,每種方式在另外博文均可見,歡迎賜教!