色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > 管道通信: 有名管道 無名管道,行業(yè)大牛通通教會你

管道通信: 有名管道 無名管道,行業(yè)大牛通通教會你 時間:2018-07-17      來源:未知

管道是一種最古老也是最基本的系統(tǒng)IPC形式,管道就像現(xiàn)實中的水管,水就像數(shù)據(jù),它是消息傳遞的一種特殊方式,管道機制必須提供三方面的協(xié)調(diào)能力:互斥、同步和確定對方的存在。在Linux中是一種使用非常頻繁的通信機制。從本質(zhì)上說,管道也是一種文件,但它又和一般的文件有所不同;所有的Linux系統(tǒng)都提供此種通信機制。

管道有以下局限性:

1、它是半雙工的,即數(shù)據(jù)一個管道上的數(shù)據(jù)只能在一個方向上流動,如果要實現(xiàn)雙向通信,就必須在兩個進程之間建立兩個管道;

2、管道的緩沖區(qū)是有限的(管道制存在于內(nèi)存中,在管道創(chuàng)建時,為緩沖區(qū)分配一個頁面大小);

3、管道所傳送的是無格式字節(jié)流,這就要求管道的讀出方和寫入方必須事先約定好數(shù)據(jù)的格式,比如多少字節(jié)算作一個消息(或命令、或記錄)等等。

4、管道只能在具有公共祖先的兩個進程之間使用等等;

通常,進程會先調(diào)用pipe函數(shù)產(chǎn)生管道,接著調(diào)用fork()函數(shù),fork函數(shù)會將父進程的相關數(shù)據(jù)結(jié)構(gòu)繼承到子進程中,這樣就使子進程中的文件描述符表中的fd[0]和fd[1]指向父進程所指向的管道文件,這樣就能實現(xiàn)兩個進程之間的通信。

管道通信分為無名管道個命名管道,其中,無名管道:

int pipe(int filedes[2]);

返回值:成功,返回0,否則返回-1。參數(shù)數(shù)組包含pipe使用的兩個文件的描述符。fd[0]:讀管道,fd[1]:寫管道。

必須在fork()中調(diào)用pipe(),否則子進程不會繼承文件描述符。兩個進程不共享祖先進程,就不能使用pipe。但是可以使用命名管道。

命名管道FIFO:

管道最大的劣勢就是沒有名字,只能用于有一個共同祖先進程的各個進程之間。FIFO代表先進先出,單它是一個單向數(shù)據(jù)流,也就是半雙工,和無名管道不同的是:每個FIFO都有一個路徑與之關聯(lián),從而允許無親緣關系的進程訪問。

int mkfifo(const char *pathname, mode_t mode);

這里pathname是路徑名,mode是sys/stat.h里面定義的創(chuàng)建文件的權(quán)限.

命名管道具有很好的使用靈活性,表現(xiàn)在:

管道是一種把兩個進程之間的標準輸入和標準輸出連接起來的機制,從而提供一種讓多個進程間通信的方法,當進程創(chuàng)建管道時,每次都需要提供兩個文件描述符來操作管道。其中一個對管道進行寫操作,另一個對管道進行讀操作。對管道的讀寫與一般的IO系統(tǒng)函數(shù)一致,使用write()函數(shù)寫入數(shù)據(jù),使用read()讀出數(shù)據(jù)。它是由內(nèi)核管理的一個緩沖區(qū),它的一端連接一個進程的輸出,另一端連接一個進程的輸入。管道的緩沖區(qū)不需要很大,它被設計為環(huán)形的數(shù)據(jù)結(jié)構(gòu),當兩個進程都終止后,管道的生命周期也會被結(jié)束。

注:只有在管道的讀端存在時,向管道中寫入數(shù)據(jù)才有意義,具有親緣關系通過進程間通信,用戶自己創(chuàng)建管道,完成讀寫操作,管道和FIFO的數(shù)據(jù)是字節(jié)流,應用程序之間必須事先確定特定的傳輸"協(xié)議",同時,父子進程在運行時,它們的先后次序并不能保證。因此,為了保證父子進程已經(jīng)關閉了相應的文件描述符,可在兩個進程中調(diào)用sleep()函數(shù)達成。

上一篇:信號量是什么,讓你幾分鐘弄懂

下一篇:linux移植方法步驟?大牛區(qū)區(qū)幾步教會你

熱點文章推薦
華清學員就業(yè)榜單
高薪學員經(jīng)驗分享
熱點新聞推薦
前臺專線:010-82525158 企業(yè)培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權(quán)所有 ,京ICP備16055225號-5京公海網(wǎng)安備11010802025203號

回到頂部

主站蜘蛛池模板: 国产伦人人人人人人性 | 浪潮色诱AV久久久久久久 | 久久人力资源与普通版对比 | 久久不见久久见免费视频7 BBW极度另类孕妇 | 亚洲精品国产品国语在线观看 | 国产freesexvideos性中国 | 131美女爽爽爽爱做视频 | 国产真实夫妇交换视频 | 高潮又爽又黄又无遮挡免费 | 亚洲熟女综合色一区二区三区 | 中文字幕免费在线播放 | 精品久久久久久无码人妻A片 | 少妇人妻偷人精品免费视频 | 国产大片黄在线观看私人影院 | 国产精品久久久久久久免费A片 | 青青久热 | 天天爽夜夜爽人人爽曰 | zooslook欧美另类| 亚洲精品区午夜亚洲精品区 | 国产亚洲va综合人人澡精品 | 欧洲亚洲精品A片久久99动漫 | 伊伊人成亚洲综合人网香 | 女人高潮潮叫免费视频 | 亚洲色大成网站WWW永久网 | 特级毛片A片全部免费97 | 18禁动漫美女禁处被爆桶出水 | 天天综合天天爱天天做 | 乌克兰鲜嫩xxxx | 久久综合久久久久 | 中文字幕久久久久人妻中出 | 久久久国产精品萌白酱免费 | 国产精品一区亚洲二区日本三区 | 色多多A级毛片免费看 | 亚洲男男无套GV大学生 | 爆乳2把你榨干哦 | 色惰日本视频网站 | 欧美躁天天躁无码中文字 | 1313午夜精品理论片 | 曰批免费视频播放免费 | 一女被两男桶进去A片免费 日本欧美在线 | 尤物TV国产精品看片在线 |