校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁(yè) > 知識(shí)庫(kù) > Linux進(jìn)程通信(IPC)方式簡(jiǎn)介

Linux進(jìn)程通信(IPC)方式簡(jiǎn)介

熱門標(biāo)簽:江蘇云電銷機(jī)器人公司 百度地圖標(biāo)注錯(cuò)了有責(zé)任嗎 客服外呼系統(tǒng)怎么樣 華鋒e路航港口地圖標(biāo)注 揭陽(yáng)智能電話機(jī)器人推薦 地圖標(biāo)注員都是年輕人 河南信譽(yù)好的不封卡電話外呼系統(tǒng) 如果做線上地圖標(biāo)注 打電話機(jī)器人接我是他的秘書

進(jìn)程間通信的目的

數(shù)據(jù)傳輸:一個(gè)進(jìn)程需要將它的數(shù)據(jù)發(fā)送給另一個(gè)進(jìn)程,發(fā)送的數(shù)據(jù)量在一個(gè)字節(jié)到幾兆字節(jié)之間。
共享數(shù)據(jù):多個(gè)進(jìn)程想要操作共享數(shù)據(jù),一個(gè)進(jìn)程對(duì)共享數(shù)據(jù)的修改,別的進(jìn)程應(yīng)該立刻看到。
通知事件:一個(gè)進(jìn)程需要向另一個(gè)或一組進(jìn)程發(fā)送消息,通知它(它們)發(fā)生了某種事件(如進(jìn)程終止時(shí)要通知父進(jìn)程)。
資源共享:多個(gè)進(jìn)程之間共享同樣的資源。為了作到這一點(diǎn),需要內(nèi)核提供鎖和同步機(jī)制。
進(jìn)程控制:有些進(jìn)程希望完全控制另一個(gè)進(jìn)程的執(zhí)行(如Debug進(jìn)程),此時(shí)控制進(jìn)程希望能夠攔截另一個(gè)進(jìn)程的所有陷入和異常,并能夠及時(shí)知道它的狀態(tài)改變。

進(jìn)程通信方式

linux下進(jìn)程間通信的幾種主要方式:

(1)管道(pipe)和有名管道(FIFO)
(2)信號(hào)(signal)
(3)消息隊(duì)列
(4)共享內(nèi)存(shared memory)
(5)信號(hào)量(semaphore)
(6)套接字(socket)

管道

管道(pipe)及有名管道(named pipe):管道可用于具有親緣關(guān)系進(jìn)程間的通信,有名管道克服了管道沒有名字的限制,因此,除具有管道所具有的功能外,它還允許無(wú)親緣關(guān)系進(jìn)程間的通信。
管道是單向的、先進(jìn)先出的、無(wú)結(jié)構(gòu)的、固定大小的字節(jié)流,它把一個(gè)進(jìn)程的標(biāo)準(zhǔn)輸出和另一個(gè)進(jìn)程的標(biāo)準(zhǔn)輸入連接在一起。寫進(jìn)程在管道的尾端寫入數(shù)據(jù),讀進(jìn)程在管道的首端讀出數(shù)據(jù)。數(shù)據(jù)讀出后將從管道中移走,其它讀進(jìn)程都不能再讀到這些數(shù)據(jù)。管道提供了簡(jiǎn)單的流控制機(jī)制。進(jìn)程試圖讀空管道時(shí),在有數(shù)據(jù)寫入管道前,進(jìn)程將一直阻塞。同樣,管道已經(jīng)滿時(shí),進(jìn)程再試圖寫管道,在其它進(jìn)程從管道中移走數(shù)據(jù)之前,寫進(jìn)程將一直阻塞。通常有種限制,一是半雙工,只能單向傳輸;二是只能在父子進(jìn)程間使用。
有名管道(也叫FIFO,因?yàn)楣艿拦ぷ髟谙热胂瘸龅脑瓌t下,第一個(gè)寫入管道的數(shù)據(jù)也是第一個(gè)被讀出的數(shù)據(jù))。與管道不同,F(xiàn)IFO不是臨時(shí)的對(duì)象,它們是文件系統(tǒng)中真正的實(shí)體,可以用mkfifo命令創(chuàng)建。只要有合適的訪問權(quán)限,進(jìn)程就可以使用FIFO。FIFO的打開方式和管道稍微不同。一個(gè)管道(它的兩個(gè)file數(shù)據(jù)結(jié)構(gòu)、VFS I節(jié)點(diǎn)和共享數(shù)據(jù)頁(yè))是一次性創(chuàng)建的,而FIFO已經(jīng)存在,可以由它的用戶打開和關(guān)閉。Linux必須處理在寫進(jìn)程打開FIFO之前讀進(jìn)程對(duì)它的打開,也必須處理在寫進(jìn)程寫數(shù)據(jù)之前讀進(jìn)程對(duì)管道的讀。除此以外,F(xiàn)IFO幾乎和管道的處理完全一樣,而且它們使用一樣的數(shù)據(jù)結(jié)構(gòu)和操作。

信號(hào)

信號(hào)(signal):信號(hào)是比較復(fù)雜的通信方式,用于通知接受進(jìn)程有某種事件發(fā)生,除了用于進(jìn)程間通信外,進(jìn)程還可以發(fā)送信號(hào)給進(jìn)程本身;linux除了支持Unix早期信號(hào)語(yǔ)義函數(shù)sigal外,還支持語(yǔ)義符合Posix.1標(biāo)準(zhǔn)的信號(hào)函數(shù)sigaction(實(shí)際上,該函數(shù)是基于BSD的,BSD為了實(shí)現(xiàn)可靠信號(hào)機(jī)制,又能夠統(tǒng)一對(duì)外接口,用sigaction函數(shù)重新實(shí)現(xiàn)了signal函數(shù))。
信號(hào)是在軟件層次上對(duì)中斷機(jī)制的一種模擬,是一種異步通信方式。
信號(hào)可以直接進(jìn)行用戶空間進(jìn)程和內(nèi)核進(jìn)程之間的交互,內(nèi)核進(jìn)程也可以利用它來通知用戶空間進(jìn)程發(fā)生了哪些系統(tǒng)事件。它可以在任何時(shí)候發(fā)給某一進(jìn)程,而無(wú)需知道該進(jìn)程的狀態(tài)。
如果該進(jìn)程當(dāng)前并未處于執(zhí)行態(tài),則該信號(hào)就由內(nèi)核保存起來,直到該進(jìn)程恢復(fù)執(zhí)行再傳遞給它;如果一個(gè)信號(hào)被進(jìn)程設(shè)置為阻塞,則該信號(hào)的傳遞被延遲,直到其阻塞被取消時(shí)才被傳遞給進(jìn)程 。

進(jìn)程執(zhí)行信號(hào)的方式:
忽略信號(hào),即對(duì)信號(hào)不做任何處理,其中,有兩個(gè)信號(hào)不能忽略:SIGKILL及SIGSTOP。
捕捉信號(hào),定義信號(hào)處理函數(shù),當(dāng)信號(hào)發(fā)生時(shí),執(zhí)行相應(yīng)的處理函數(shù)。
執(zhí)行缺省操作,Linux對(duì)每種信號(hào)都規(guī)定了默認(rèn)操作。

消息隊(duì)列

消息隊(duì)列:消息隊(duì)列是消息的鏈接表,包括Posix消息隊(duì)列System V消息隊(duì)列。有足夠權(quán)限的進(jìn)程可以向隊(duì)列中添加消息,被賦予讀權(quán)限的進(jìn)程則可以讀走隊(duì)列中的消息。消息隊(duì)列克服了信號(hào)承載信息量少,管道只能承載無(wú)格式字節(jié)流以及緩沖區(qū)大小受限等缺點(diǎn)。
消息隊(duì)列的實(shí)現(xiàn)包括創(chuàng)建或打開消息隊(duì)列、添加消息、讀取消息和控制消息隊(duì)列這四種操作:
創(chuàng)建或打開消息隊(duì)列使用的函數(shù)是msgget,這里創(chuàng)建的消息隊(duì)列的數(shù)量會(huì)受到系統(tǒng)消息隊(duì)列數(shù)量的限制。
添加消息使用的函數(shù)是msgsnd函數(shù),它把消息添加到已打開的消息隊(duì)列末尾。
讀取消息使用的函數(shù)是msgrcv,它把消息從消息隊(duì)列中取走,與FIFO不同的是,這里可以指定取走某一條消息。
控制消息隊(duì)列使用的函數(shù)是msgctl,它可以完成多項(xiàng)功能。

信號(hào)量/信號(hào)燈

信號(hào)量(semaphore):主要作為進(jìn)程間以及同一進(jìn)程不同線程之間的同步手段。信號(hào)量是用來解決進(jìn)程之間的同步與互斥問題的一種進(jìn)程之間通信機(jī)制,包括一個(gè)稱為信號(hào)量的變量和在該信號(hào)量下等待資源的進(jìn)程等待隊(duì)列,以及對(duì)信號(hào)量進(jìn)行的兩個(gè)原子操作(PV操作)。其中信號(hào)量對(duì)應(yīng)于某一種資源,取一個(gè)非負(fù)的整型值。信號(hào)量值指的是當(dāng)前可用的該資源的數(shù)量,若它等于0則意味著目前沒有可用的資源。

P操作:如果有可用的資源(信號(hào)量值>0),則占用一個(gè)資源(給信號(hào)量值減去一,進(jìn)入臨界區(qū)代碼)。如果沒有可用的資源(信號(hào)量值等于0),則被阻塞到,直到系統(tǒng)將資源分配給該進(jìn)程(進(jìn)入等待隊(duì)列,一直等到資源輪到該進(jìn)程)。
V操作:如果在該信號(hào)量的等待隊(duì)列中有進(jìn)程在等待資源,則喚醒一個(gè)阻塞進(jìn)程。如果沒有進(jìn)程等待它,則釋放一個(gè)資源(給信號(hào)量值加一)。

共享內(nèi)存

共享內(nèi)存(shared memory)可以說是最有用的進(jìn)程間通信方式,也是最快的IPC形式。兩個(gè)不同進(jìn)程A、B共享內(nèi)存的意思是,同一塊物理內(nèi)存被映射到進(jìn)程A、B各自的進(jìn)程地址空間。進(jìn)程A可以即時(shí)看到進(jìn)程B對(duì)共享內(nèi)存中數(shù)據(jù)的更新,反之亦然。由于多個(gè)進(jìn)程共享同一塊內(nèi)存區(qū)域,必然需要某種同步機(jī)制,互斥鎖和信號(hào)量都可以。

采用共享內(nèi)存通信的一個(gè)顯而易見的好處是效率高,因?yàn)檫M(jìn)程可以直接讀寫內(nèi)存,而不需要任何數(shù)據(jù)的拷貝。對(duì)于像管道和消息隊(duì)列等通信方式,則需要在內(nèi)核和用戶空間進(jìn)行四次的數(shù)據(jù)拷貝,而共享內(nèi)存則只拷貝兩次數(shù)據(jù):一次從輸入文件到共享內(nèi)存區(qū),另一次從共享內(nèi)存區(qū)到輸出文件。實(shí)際上,進(jìn)程之間在共享內(nèi)存時(shí),并不總是讀寫少量數(shù)據(jù)后就解除映射,有新的通信時(shí),再重新建立共享內(nèi)存區(qū)域。而是保持共享區(qū)域,直到通信完畢為止,這樣,數(shù)據(jù)內(nèi)容一直保存在共享內(nèi)存中,并沒有寫回文件。共享內(nèi)存中的內(nèi)容往往是在解除映射時(shí)才寫回文件的。因此,采用共享內(nèi)存的通信方式效率是非常高的。

共享內(nèi)存實(shí)現(xiàn)的步驟:
1.創(chuàng)建共享內(nèi)存,這里用到的函數(shù)是shmget,也就是從內(nèi)存中獲得一段共享內(nèi)存區(qū)域。
2.映射共享內(nèi)存,也就是把這段創(chuàng)建的共享內(nèi)存映射到具體的進(jìn)程空間中去,這里使用的函數(shù)是shmat。
3.使用不帶緩沖的I/O讀寫命令對(duì)其進(jìn)行操作。
4.撤銷映射的操作,其函數(shù)為shmdt。

套接口

套接口(socket):更為一般的進(jìn)程間通信機(jī)制,可用于不同機(jī)器之間的進(jìn)程間通信。起初是由Unix系統(tǒng)的BSD分支開發(fā)出來的,但現(xiàn)在一般可以移植到其它類Unix系統(tǒng)上:Linux和System V的變種都支持套接字。

您可能感興趣的文章:
  • Linux進(jìn)程間通信——使用流套接字
  • 詳解Linux進(jìn)程間通信——使用信號(hào)量
  • 詳解Linux進(jìn)程間通信——使用共享內(nèi)存
  • 關(guān)于進(jìn)程間通信的Linux小程序
  • PHP下操作Linux消息隊(duì)列完成進(jìn)程間通信的方法
  • Linux進(jìn)程間通信--使用信號(hào)

標(biāo)簽:許昌 淘寶邀評(píng) 馬鞍山 婁底 金昌 赤峰 邵陽(yáng) 巴彥淖爾

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Linux進(jìn)程通信(IPC)方式簡(jiǎn)介》,本文關(guān)鍵詞  Linux,進(jìn)程,通信,IPC,方式,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Linux進(jìn)程通信(IPC)方式簡(jiǎn)介》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Linux進(jìn)程通信(IPC)方式簡(jiǎn)介的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    欧美国产日韩一二三区| 亚洲色图视频免费播放| 色噜噜狠狠一区二区三区果冻| 午夜激情综合网| 成人免费在线观看入口| 欧美www视频| 欧美色爱综合网| 成年人国产精品| 国产激情视频一区二区在线观看 | 国产精品二区一区二区aⅴ污介绍| 欧美性色欧美a在线播放| 成人av在线一区二区| 国产在线不卡视频| 日韩av电影天堂| 亚洲妇女屁股眼交7| 亚洲欧洲综合另类| 中文字幕在线播放不卡一区| 久久日韩粉嫩一区二区三区 | 亚洲欧洲美洲综合色网| 欧美精品一区二区三区在线播放| 欧美日韩久久久| 欧美日本在线看| 欧美日韩一区二区欧美激情| 91黄色小视频| 在线亚洲精品福利网址导航| 99精品视频中文字幕| 成人性生交大片免费看在线播放| 久久99精品国产麻豆婷婷洗澡| 丝袜美腿亚洲一区| 日精品一区二区三区| 午夜精品久久久久久久99水蜜桃| 亚洲午夜久久久久| 亚洲成人动漫在线免费观看| 亚洲国产婷婷综合在线精品| 亚洲影视资源网| 亚洲成人av电影在线| 亚洲第一综合色| 亚洲超丰满肉感bbw| 香蕉成人啪国产精品视频综合网| 一区二区欧美视频| 亚洲成a人v欧美综合天堂下载| 亚洲国产精品麻豆| 日韩不卡手机在线v区| 另类小说色综合网站| 久久超碰97人人做人人爱| 精品综合久久久久久8888| 国产一区二区在线观看免费 | 99久久精品免费精品国产| eeuss鲁一区二区三区| 色综合中文字幕国产| 97久久人人超碰| 欧美日韩一区 二区 三区 久久精品 | 麻豆国产一区二区| 国产一区二区剧情av在线| 粉嫩aⅴ一区二区三区四区| 91免费视频网| 欧美日韩精品一区视频| 欧美一二区视频| 国产视频不卡一区| 亚洲欧美日韩国产成人精品影院| 亚洲一区二区av电影| 美女视频一区二区| 国产盗摄女厕一区二区三区| 97se狠狠狠综合亚洲狠狠| 欧美日韩1区2区| 久久久久久毛片| 一区二区三区高清在线| 日产国产欧美视频一区精品| 国产一区二区三区久久久| 成人精品在线视频观看| 欧美三级电影在线看| 久久久青草青青国产亚洲免观| 国产精品久久久久久久蜜臀| 午夜精品久久久久久不卡8050| 国产一区二区在线免费观看| 91行情网站电视在线观看高清版| 日韩女优制服丝袜电影| 亚洲天堂成人网| 毛片一区二区三区| 一本一道久久a久久精品| 日韩精品中文字幕一区| 国产精品久久国产精麻豆99网站 | 精品一二线国产| 91网上在线视频| 欧美精品一区二区三区久久久| 中文字幕色av一区二区三区| 日本亚洲三级在线| 91小视频在线观看| 久久青草欧美一区二区三区| 亚洲一区二区三区四区五区中文| 国产乱码精品一区二区三区忘忧草| 在线亚洲精品福利网址导航| 国产午夜亚洲精品羞羞网站| 午夜成人免费电影| 91亚洲永久精品| 久久久影院官网| 日韩主播视频在线| 91国产成人在线| 欧美激情中文字幕| 久久99国内精品| 欧美男男青年gay1069videost| 中文字幕日韩欧美一区二区三区| 九一久久久久久| 在线不卡中文字幕播放| 亚洲男同1069视频| 成人高清视频在线| 久久亚区不卡日本| 男人的天堂久久精品| 欧美性高清videossexo| 国产精品二区一区二区aⅴ污介绍| 久久成人麻豆午夜电影| 91麻豆精品91久久久久同性| 亚洲国产视频网站| 91国产福利在线| 亚洲欧美日韩中文字幕一区二区三区 | 美女国产一区二区| 欧美群妇大交群的观看方式| 一区二区三区精密机械公司| 色综合一个色综合| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 久久99精品国产| 精品国产伦一区二区三区观看方式| 日韩主播视频在线| 在线不卡免费欧美| 日韩av不卡一区二区| 7777精品伊人久久久大香线蕉完整版| 一区二区三区日韩精品| 色综合久久综合中文综合网| 亚洲欧美福利一区二区| 91免费观看视频| 夜夜精品视频一区二区| 欧美性做爰猛烈叫床潮| 亚洲电影你懂得| 91精品国产综合久久久久久漫画| 日韩av电影天堂| 日韩欧美一级二级三级| 久久99国产精品久久99| 久久一夜天堂av一区二区三区| 麻豆精品久久精品色综合| 精品福利一区二区三区免费视频| 韩国毛片一区二区三区| 国产日韩三级在线| 99国产精品一区| 一区二区成人在线视频| 3atv一区二区三区| 精品午夜一区二区三区在线观看| 久久精品在线观看| 99国产欧美另类久久久精品| 亚洲精品国产成人久久av盗摄 | 麻豆精品视频在线观看免费| 精品国产人成亚洲区| 粉嫩一区二区三区性色av| 中文字幕综合网| 欧美日韩国产美| 国模冰冰炮一区二区| 中文字幕中文字幕在线一区| 在线免费观看一区| 婷婷久久综合九色综合绿巨人| 欧美一区二区免费| 国产99久久久久久免费看农村| 亚洲人被黑人高潮完整版| 欧美卡1卡2卡| 国产精品系列在线观看| 亚洲精品乱码久久久久久日本蜜臀| 欧美日韩在线直播| 国产综合一区二区| 亚洲精品乱码久久久久久日本蜜臀| 欧美夫妻性生活| 福利电影一区二区三区| 亚洲一区二区三区中文字幕| 精品国产不卡一区二区三区| 成人免费毛片a| 日韩福利电影在线| 国产欧美精品区一区二区三区 | 欧美艳星brazzers| 黄色小说综合网站| 亚洲一区二区精品视频| 久久综合色8888| 欧美日韩一级二级| 国产成人亚洲精品狼色在线| 亚洲成av人片| 国产精品久久久久久亚洲毛片 | 日韩色在线观看| 91在线观看下载| 久久er精品视频| 一区二区三区在线视频观看| 精品免费国产一区二区三区四区| 91浏览器打开| 狠狠色丁香久久婷婷综合丁香| 一区二区三区精品在线观看| 久久精品人人做人人综合| 7777女厕盗摄久久久| 91麻豆免费观看| 国产一区二区三区在线观看免费视频| 一级日本不卡的影视| 国产精品久久国产精麻豆99网站| 欧美刺激脚交jootjob| 欧美日韩在线精品一区二区三区激情| 春色校园综合激情亚洲| 久久99国产精品成人|