linux下進程間通訊的幾種主要手段:
1.管道(Pipe)及有名管道(named pipe):管道可用於具備親緣關係進程間的通訊,有名管道克服了管道沒有名字的限制,所以,除具備管道所具備的功能外,它還容許無親緣關係進程間的通訊;
2.信號(Signal):信號是比較複雜的通訊方式,用於通知接受進程有某種事件生,除了用於進程間通訊外,進程還能夠發送信號給進程自己;linux除了支持Unix早期 信號語義函數sigal外,還支持語義符合Posix.1標準的信號函數sigaction(實際上, 該函數是基於BSD的,BSD爲了實現可靠信號機制,又可以統一對外接口,sigaction函數從新實現了signal函數);
3.報文(Message)隊列(消息隊列):消息隊列是消息的連接表,包括Posix消息隊列system V消息隊列。有足夠權限的進程能夠向隊列中添加消息,被賦予讀權限的進程則能夠讀走隊列中的消息。消息隊列克服了信號承載信息量少,管道只能承載無格式字節流以及緩衝區大小受限等缺點。
4.共享內存:使得多個進程能夠訪問同一塊內存空間,是最快的可用IPC形式。是針其餘通訊機制運行效率較低設計的。每每與其它通訊機制,如信號量結合使用, 來達到進程間的同步及互斥。
5.信號量(semaphore):主要做爲進程間以及同一進程不一樣線程之間的同步手段。
6.套接字(Socket):更爲通常的進程間通訊機制,可用於不一樣機器之間的進程間通訊。起初是由Unix系統的BSD分支開發出來的,但如今通常能夠移植到其它類Unix 系統上:Linux和System V的變種都支持套接字。linux
在此只列出六種方式的簡介,每種方式在另外博文都可見,歡迎賜教!函數