目錄:
?????????? 1.命名管道
?????????? 2.創(chuàng)建命名管道
---------------------------------------------------------------------------------------------------------------------------------
1.命名管道
1.管道的一個(gè)應(yīng)用限制就是只能在具有共同祖先(具有親緣關(guān)系)的進(jìn)程間通信
2.如果我們想在不相關(guān)的進(jìn)程之間交換數(shù)據(jù),可以使用FIFO這個(gè)文件來(lái)做這項(xiàng)工作,它經(jīng)常被稱為命名管道
3.命名管道是一種特殊文件類型
2.創(chuàng)建命名管道
mkfifo?? 是一個(gè)命令? ---- 創(chuàng)建一個(gè)命名管道
?我們先以文件的方式實(shí)現(xiàn)一下命名管道
?
?
?可是把數(shù)據(jù)寫進(jìn)文件里,降低效率
?我們現(xiàn)在有兩個(gè)需求??
1.你得存在一個(gè)文件,這個(gè)文件打開(kāi)時(shí)它把數(shù)據(jù)不要刷新到磁盤上,而只是在內(nèi)存當(dāng)中作為數(shù)據(jù)的臨時(shí)保存
2.這個(gè)文件在磁盤上也有對(duì)應(yīng)的文件名? ,方便兩個(gè)進(jìn)程使用路徑+文件名的方式看到同一份資源
符合上面這兩個(gè)條件的就是我們的命名管道
----------------------------------------------------------------------------------------------------------------------------
?
?但是如果你想讓makefile一次就生成兩個(gè)可執(zhí)行程序
?接下來(lái)我們?cè)撛趺醋瞿????/p>
創(chuàng)建管道文件
?
?
?自此,我們的管道文件就有了,進(jìn)程怎么通信呢???
一旦我們具有了一個(gè)命名管道,此時(shí)我們只需要讓通信雙方按照文件操作即可?。?!
我們現(xiàn)在開(kāi)始證明他們兩個(gè)能通信?。?!
接下來(lái),我們?cè)谶\(yùn)行我們的client程序,打開(kāi)管道文件,進(jìn)行寫入
?
?
?------------------------------------------------------------------------------------------------------------------
因?yàn)槊艿?,也是基于字?jié)流的,所以實(shí)際上,信息傳遞的時(shí)候,是需要雙方定制“協(xié)議的”,不考慮這個(gè)
今天我們就單純的進(jìn)行字符串通信
?
這樣子我們就實(shí)現(xiàn)了進(jìn)程間通信的目的:除了實(shí)現(xiàn)數(shù)據(jù)傳輸之外,還實(shí)現(xiàn)了一個(gè)進(jìn)程控制另一個(gè)進(jìn)程
?----------------------------------------------------------------------------------------------------------------------------
?
為什么我們之前的pipe叫做匿名管道,為什么現(xiàn)在的fifo叫做命名管道呢??
原因是因?yàn)閒ifo命名管道有名字,名字叫fifo,為什么一定要有名字呢??
為了保證不同進(jìn)程看到同一個(gè)文件,必須要有名字
因?yàn)槟涿艿罌](méi)有名字,為什么匿名管道可以沒(méi)有名字呢??文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-463676.html
因?yàn)樗峭ㄟ^(guò)父子繼承的方式看到同一份資源,不需要名字來(lái)標(biāo)識(shí)同一份資源文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-463676.html
到了這里,關(guān)于進(jìn)程間通信(命名管道)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!