當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > 關(guān)于管道使用規(guī)則的總結(jié)
關(guān)于管道使用規(guī)則的總結(jié)
時(shí)間:2014-08-21 來(lái)源:未知
中進(jìn)程間通信方式中,有一種為無(wú)名管道。對(duì)管道的讀寫(xiě)操作需要注意以下的使用規(guī)則:
1、當(dāng)讀的時(shí)候:
(1) 有寫(xiě)端,至少有一個(gè)進(jìn)程,有寫(xiě)端存在
有數(shù)據(jù):使用read可以讀到pipe中的數(shù)據(jù),返回實(shí)際讀取的字節(jié)數(shù)
無(wú)數(shù)據(jù):阻塞,等待其他進(jìn)程向管道寫(xiě)入數(shù)據(jù)。
(2) 無(wú)寫(xiě)端,所有進(jìn)程,寫(xiě)端都關(guān)閉了。
有數(shù)據(jù):使用read可以讀到pipe中的數(shù)據(jù),返回實(shí)際讀取的字節(jié)數(shù)
無(wú)數(shù)據(jù):無(wú)寫(xiě)端意味著所有的寫(xiě)描述符關(guān)閉了,不會(huì)向管道中寫(xiě)入數(shù)據(jù)了,會(huì)立刻返回0.
2、 當(dāng)寫(xiě)的時(shí)候:
(1) 有讀端,至少有一個(gè)進(jìn)程,讀端存在。
有空間:可使用write向管道中寫(xiě)入內(nèi)容,返回實(shí)際寫(xiě)入的字節(jié)數(shù)。
空間不足:有多少寫(xiě)多少,沒(méi)寫(xiě)完的阻塞等待,直到其他進(jìn)程將管道中數(shù)據(jù)讀走,才繼續(xù)寫(xiě)入數(shù)據(jù)?蓪(xiě)一個(gè)程序來(lái)測(cè)試無(wú)名管道的大小。(64K)

(2) 無(wú)讀端,所有進(jìn)程,寫(xiě)端都關(guān)閉了。
沒(méi)有讀端的時(shí)候,想寫(xiě)管道,會(huì)得到內(nèi)核給的SIGPIPE信號(hào)。管道破裂。
管道讀端不存在的時(shí)候,內(nèi)核是不允許向管道內(nèi)寫(xiě)入數(shù)據(jù)的。以下程序能夠驗(yàn)證:

華清遠(yuǎn)見(jiàn)90+項(xiàng)目獲批!教育部2021最新協(xié)同育人項(xiàng)目名
華清遠(yuǎn)見(jiàn)榮獲2021騰訊教育“年度口碑影響力職業(yè)教育品
華清遠(yuǎn)見(jiàn)受邀參加2021年武漢民辦高校信息學(xué)科合作聯(lián)盟
溫暖同行共創(chuàng)佳績(jī) 2019華清遠(yuǎn)見(jiàn)北京總部年會(huì)大曝光
助力高校AI人工智能學(xué)科建設(shè) 華清遠(yuǎn)見(jiàn)人工智能師資班
華清遠(yuǎn)見(jiàn)受邀參加四川省物聯(lián)網(wǎng)年會(huì),榮獲優(yōu)秀企業(yè)專家
