亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發(fā) > Linux Shell > 正文

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

2020-07-27 19:20:42
字體:
供稿:網(wǎng)友

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

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

進(jìn)程通信方式

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

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

管道

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

信號

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

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

消息隊(duì)列

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

信號量/信號燈

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

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

共享內(nèi)存

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

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产亚洲精品美女久久久久久久久久| 日本熟妇人妻中出| 国产日韩视频在线| 一二三区高清| 免费人成精品欧美精品| 久久久久久影院| 欧美乱大交xxxx| 国产免费视频传媒| 日韩精品电影| 91丨九色丨蝌蚪| 国产一级在线观看www色| www.cao超碰| 国模无码一区二区三区| 激情综合丝袜美女一区二区| 欧美日韩高清不卡| 超碰在线观看91| 扒开伸进免费视频| 麻豆av免费在线| 欧美日韩一区二区国产| 欧美性受黑人性爽| 99久久精品免费看国产小宝寻花| 欧美久草视频| 一级毛片久久久| 欧美影院久久久| 国产免费一区视频观看免费| 久久婷婷五月综合| 欧美性受xxxx| 看全色黄大色黄大片免责看的| 婷婷开心激情综合| 久久久久久有精品国产| 91精品在线视频观看| 国产91色在线|亚洲| 99精品国产在热久久| 欧美日韩一区在线观看视频| 亚洲精品自拍网| 综合亚洲深深色噜噜狠狠网站| 黄色av一区| 国产欧美日韩另类| 成人免费淫片aa视频免费| 成人系列视频| 超碰在线cao| 日韩高清欧美| 无码国产精品96久久久久| 丝袜 亚洲 另类 欧美 重口| 国产成年人免费视频| 中文字幕亚洲一区二区三区五十路| 色婷婷av一区二区| 欧美在线视频网站| h网站在线播放| 中文字幕一区二区人妻电影| www.久久东京| 欧美高清性猛交| 91精品国产自产观看在线| 亚洲理论片在线观看| 波多野结衣乳巨码无在线| 中文字幕日韩欧美精品高清在线| 欧美天天在线| 2021年精品国产福利在线| 欧美日韩影院| 91精品国产综合久久香蕉922| 国产一区二区三区四区五区3d| 国产草草浮力影院| 欧美一级艳片视频免费观看| 免费不卡中文字幕视频| 亚洲中文字幕久久精品无码喷水| 99久久精品无码一区二区毛片| 欧美精品性视频| 亚洲欧美色视频| 欧美老女人第四色| 国产精品一区二区在线观看| 最近高清中文在线字幕在线观看1| 国产日韩欧美| 精品少妇久久久| а√天堂8资源在线| 欧美在线免费观看视频| 日本精品一区二区三区四区的功能| 91高清视频在线观看| wwwwww.欧美系列| av综合电影网站| 日本人妻一区二区三区| 99精品福利视频| 欧美凹凸一区二区三区视频| 手机在线观看你懂的| 欧美一区二区三级| 亚洲精品成a人| 超碰在线免费观看97| 欧美黑人在线观看| 久草热在线观看| 粉嫩av一区二区三区四区五区| 国产99精品在线观看| 91精品久久久久久久久久久久| 农村妇女一区二区| 久久久不卡网国产精品一区| 欧美精品videos性欧美| 自拍视频一区二区| 亚洲国产影院| 97人人爽人人| 免费在线观看成年人视频| 女人色在线免费视频| 免费看成人片| 国产ts在线播放| 影音先锋制服丝袜| 久久亚洲资源中文字| 国产寡妇树林野战在线播放| 欧美丰满高潮xxxx喷水动漫| 久久成人在线视频| 天天综合网久久综合网| 国产深夜视频在线观看| www.久久av.com| 2019中文字幕在线电影免费| 成人av在线资源网| 中文字幕在线中文字幕在线中三区| 免费在线成人av电影| 久久精品国产精品青草| 日韩在线不卡视频| 少妇高潮惨叫久久久久| 亚洲v在线观看| 91麻豆精品国产91久久久资源速度| 久久精品国产亚洲AV无码麻豆| 欧美香蕉视频| 欧美韩国理论所午夜片917电影| 欧美+日本+国产+在线a∨观看| 久久久噜噜噜久久中文字免| 蜜桃精品一区二区三区| 一本色道久久hezyo无码| 欧美五级在线观看视频播放| 亚洲国产合集| 国产在线欧美日韩| 亚洲久久中文字幕| 国产亚洲精品美女久久久m| 在线播放日韩欧美| 成人毛片视频在线观看| 欧美日韩视频| 久久国产精彩视频| 91国产免费看| 欧美日韩国产在线| 日韩欧美中文免费| 丁香花在线观看完整版电影| 日韩av综合网| 91嫩草视频在线观看| 国产欧美一区二区三区视频在线观看| 国产精品成人在线观看| av成人老司机| 成人18在线| 国产亚洲一区在线| 成人在线免费观看av| 男人午夜视频在线观看| 日韩激情av在线播放| 九九热这里有精品视频| 欧美videossexotv100| 亚洲成人黄色| 欧美大片一区二区三区| 亚洲图片小说综合| 久久黄色小视频| 久久影视精品| 成人黄色免费片| 国产免费黄色小视频| 免费一级欧美在线观看视频| 国产熟妇久久777777| 日韩一区二区三区资源| 欧美日韩专区在线| 最新在线观看av| 欧美日韩aaaa| 欧美一区深夜视频| 久久99蜜桃综合影院免费观看| 免费男女羞羞的视频网站中文子暮| 97精品国产97久久久久久久久久久久| 精品视频一区三区九区| 综合久久伊人| 中文字幕中文乱码欧美一区二区| 免费人成视频在线| 国产精品自产拍在线观| 懂色av中文字幕一区二区三区| 先锋影音av资源在线| 亚洲香蕉伊在人在线观| 午夜成年人在线免费视频| 一女二男3p波多野结衣| 另类天堂视频在线观看| 少妇无套高潮一二三区| 一级片一级片一级片| 国产午夜精品久久久| 国产精品免费一区二区三区观看| 国产精品福利av| 91av视频在线免费观看| 一区在线观看免费| 爽成人777777婷婷| 国产日韩欧美一区在线| 日韩视频国产视频| 欧美成人一二三| 浮生影视网在线观看免费| 亚洲精品在线视频| 久热精品视频在线观看一区| 综合国产第二页| 国产成人在线网址| 久操网在线观看| 精品sm捆绑视频| 久久66热这里只有精品| 亚洲午夜久久久| 99在线免费观看视频| 日本特黄特色aaa大片免费| 久久亚洲导航| 57pao国产一区二区| 伊人久久一区二区| 做爰高潮hd色即是空| 97人人模人人爽人人喊38tv| 欧美三级在线免费观看| 午夜爽爽视频| 欧美一区二区三区白人| wwwwww欧美| 亚洲精品国产免费| 一区二区三区四区在线看| 成人丝袜高跟foot| 肉色超薄丝袜脚交一区二区| 日本特黄一级片| 亚洲美女性生活| 国产强被迫伦姧在线观看无码| 欧美激情aaa| 精品夜色国产国偷在线| 国产精品免费区二区三区观看| 亚洲高清视频中文字幕| 欧美aaa在线观看| 免费精品99久久国产综合精品应用| 一二三区在线观看| 18av视频| 亚洲精品孕妇| 日本精品视频网站| 久草热在线观看| 欧美性猛交99久久久久99按摩| 在线日韩中文字幕| 久久精品国产亚洲blacked| 看片一区二区| 久久国产精品久久久久久久久久| 天天摸天天碰天天爽天天弄| 97公开免费视频| 亚洲欧洲三级电影| 国产高清一区二区| 伊人影院综合在线| 娇妻被老王脔到高潮失禁视频| 秋霞av一区二区三区| 中文字幕一区二区三区四区五区六区| 亚洲综合精品国产一区二区三区| 91免费的视频在线播放| 欧美精品三级日韩久久| 色噜噜狠狠狠综合曰曰曰| 中文天堂在线播放| 男人的天堂免费在线视频| 久久众筹精品私拍模特| 伊人久久99| 羞羞视频在线免费看| 久久手机免费视频| 91沈先生作品| 手机看片福利在线| 日韩av在线免费看| 免费a在线观看播放| 99国产精品久久久久久| 91大神在线网站| 国产精品国码视频| 蜜桃av一区二区三区电影| 亚洲一二三四区不卡| 国产美女视频免费观看下载软件| 亚洲大尺度美女在线| 国产美女作爱全过程免费视频| 91久久夜色精品国产九色| 精品人妻大屁股白浆无码| 蜜桃av在线免费观看| 国产精品96久久久久久又黄又硬| av在线免费不卡| 99riav视频在线观看| 欧美精品激情在线观看| 欧美调教femdomvk| 户外极限露出调教在线视频| 日韩精品一区二区三区中文不卡| 亚洲最新视频在线观看| 国产大片免费看| 欧美热在线视频精品999| 欧美一区二区在线免费观看| 中文久久电影小说| 在线观看视频色潮| 欧产日产国产精品98| 国产日韩一区二区三区在线播放| 久久不见久久见国语| 91在线无精精品一区二区| 国产成人福利在线| 粉嫩av一区二区三区| 91精品国产高清91久久久久久| 亚洲熟女乱色一区二区三区久久久| 亚洲色图在线观看| 少妇性色午夜淫片aaa播放| 被灌满精子的波多野结衣| 日韩最新在线视频| 8x国产一区二区三区精品推荐| 免费观看一级特黄欧美大片| 久久免费视频网站| 成人写真视频福利网| 亚洲成人黄色在线| 成人手机在线免费视频| 黄视频在线播放| 无套内谢大学处破女www小说| 成年大片免费视频播放二级| 在线视频一区二区三| 日韩精品无码一区二区三区| 免费观看在线综合色| 国产日韩精品在线看| 中文欧美字幕免费| 美女又爽又黄视频毛茸茸| 六月丁香综合| 亚洲精品合集| 欧美极品在线| 免费观看成人在线视频| 中文字幕一区二区三区人妻四季| 精品成人国产| 成人免费区一区二区三区| 免费在线观看h| 一本—道久久a久久精品蜜桃| 一区二区三区精品视频在线观看| 男女18免费网站视频| 青青草原国产在线观看| 中文字幕在线不卡一区二区三区| 超碰日本道色综合久久综合| 性生活视频网站| 夜级特黄日本大片_在线| 亚欧激情乱码久久久久久久久| 欧美18免费视频| av毛片午夜不卡高**水| 亚洲综合图片| 国产福利一区视频| 国产日产精品1区| 成人在线爆射|