新聞中心
linux下的多個進(jìn)程間的通信機(jī)制叫做IPC(,它是多個進(jìn)程之間相互溝通的一種方法。在linux下有多種進(jìn)程間通信的方法:半雙工管道、命名管道、消息隊(duì)列、信號、信號量、共享內(nèi)存、內(nèi)存映射文件,套接字等等,下面為大家詳細(xì)講解一下Linux下的進(jìn)程通信。

創(chuàng)新互聯(lián)是一家專業(yè)提供土默特右旗企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、H5技術(shù)、小程序制作等業(yè)務(wù)。10年已為土默特右旗眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
進(jìn)程通信的方式
1.管道
管道分為有名管道和無名管道
無名管道是一種半雙工的通信方式,數(shù)據(jù)只能單向流動,而且只能在具有親緣關(guān)系的進(jìn)程間使用.進(jìn)程的親緣關(guān)系一般指的是父子關(guān)系。無明管道一般用于兩個不同進(jìn)程之間的通信。當(dāng)一個進(jìn)程創(chuàng)建了一個管道,并調(diào)用fork創(chuàng)建自己的一個子進(jìn)程后,父進(jìn)程關(guān)閉讀管道端,子進(jìn)程關(guān)閉寫管道端,這樣提供了兩個進(jìn)程之間數(shù)據(jù)流動的一種方式。
有名管道也是一種半雙工的通信方式,但是它允許無親緣關(guān)系進(jìn)程間的通信。
2.信號量
信號量是一個計(jì)數(shù)器,可以用來控制多個線程對共享資源的訪問.,它不是用于交換大批數(shù)據(jù),而用于多線程之間的同步.它常作為一種鎖機(jī)制,防止某進(jìn)程在訪問資源時其它進(jìn)程也訪問該資源.因此,主要作為進(jìn)程間以及同一個進(jìn)程內(nèi)不同線程之間的同步手段.
Linux提供了一組精心設(shè)計(jì)的信號量接口來對信號進(jìn)行操作,它們不只是針對二進(jìn)制信號量,下面將會對這些函數(shù)進(jìn)行介紹,但請注意,這些函數(shù)都是用來對成組的信號量值進(jìn)行操作的。它們聲明在頭文件sys/sem.h中。
semget函數(shù)
它的作用是創(chuàng)建一個新信號量或取得一個已有信號量
semop函數(shù)
它的作用是改變信號量的值
semctl函數(shù)
該函數(shù)用來直接控制信號量信息
3.信號
信號是一種比較復(fù)雜的通信方式,用于通知接收進(jìn)程某個事件已經(jīng)發(fā)生.
4.消息隊(duì)列
消息隊(duì)列是消息的鏈表,存放在內(nèi)核中并由消息隊(duì)列標(biāo)識符標(biāo)識.消息隊(duì)列克服了信號傳遞信息少,管道只能承載無格式字節(jié)流以及緩沖區(qū)大小受限等特點(diǎn).消息隊(duì)列是UNIX下不同進(jìn)程之間可實(shí)現(xiàn)共享資源的一種機(jī)制,UNIX允許不同進(jìn)程將格式化的數(shù)據(jù)流以消息隊(duì)列形式發(fā)送給任意進(jìn)程.對消息隊(duì)列具有操作權(quán)限的進(jìn)程都可以使用msget完成對消息隊(duì)列的操作控制.通過使用消息類型,進(jìn)程可以按任何順序讀信息,或?yàn)橄才艃?yōu)先級順序.
5.共享內(nèi)存
共享內(nèi)存就是映射一段能被其他進(jìn)程所訪問的內(nèi)存,這段共享內(nèi)存由一個進(jìn)程創(chuàng)建,但多個進(jìn)程都可以訪問.共享內(nèi)存是最快的IPC(進(jìn)程間通信)方式,它是針對其它進(jìn)程間通信方式運(yùn)行效率低而專門設(shè)計(jì)的.它往往與其他通信機(jī)制,如信號量,配合使用,來實(shí)現(xiàn)進(jìn)程間的同步與通信.
6.套接字
socket,即套接字是一種通信機(jī)制,憑借這種機(jī)制,客戶/服務(wù)器(即要進(jìn)行通信的進(jìn)程)系統(tǒng)的開發(fā)工作既可以在本地單機(jī)上進(jìn)行,也可以跨網(wǎng)絡(luò)進(jìn)行。也就是說它可以讓不在同一臺計(jì)算機(jī)但通過網(wǎng)絡(luò)連接計(jì)算機(jī)上的進(jìn)程進(jìn)行通信。也因?yàn)檫@樣,套接字明確地將客戶端和服務(wù)器區(qū)分開來。
套接字的特性由3個屬性確定,它們分別是:域、類型和協(xié)議。
可用于不同及其間的進(jìn)程通信
分享名稱:詳解Linux進(jìn)程通信
文章鏈接:http://m.fisionsoft.com.cn/article/cciciep.html


咨詢
建站咨詢
