<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          IPC-管道

          共 1050字,需瀏覽 3分鐘

           ·

          2021-03-26 19:43




          管道


              管道是進(jìn)程間的一種方式,多個(gè)進(jìn)程可以利用管道進(jìn)行通信。對(duì)于管道的理解可以從與共享內(nèi)存的區(qū)別入手。共享內(nèi)存是通過獲得相同的內(nèi)存地址,對(duì)同一塊內(nèi)存操作,而管道就好比兩個(gè)進(jìn)程間建立一個(gè)地下通道,必須有打開通道和關(guān)閉通道的操作。


              管道是半雙工的,所有數(shù)據(jù)流都是按一定順序進(jìn)行存取的。管道分為兩種:一種是有名管道;一種是無名(匿名)管道。

          • 無名管道:pipe創(chuàng)建主要用于父子進(jìn)程之前的數(shù)據(jù)傳遞。

          • 有名管道:mkfifo創(chuàng)建,主要用于不相關(guān)進(jìn)程間通信可以理解為創(chuàng)建一個(gè)文件,任何進(jìn)程都可以去讀只不過這個(gè)文件和普通文件不一樣,生成了有名管道后,就可以使用一般的文件I/O函數(shù)如open、close、read、write等來對(duì)它進(jìn)行操作。



          管道的使用



          無名管道:

          從代碼中可以看到,無名管道的創(chuàng)建會(huì)同時(shí)打開兩個(gè)句柄,file_descriptors是一個(gè)元素個(gè)數(shù)為2的數(shù)組fork之后具體要做什么取決于我們想要的數(shù)據(jù)流的方向。對(duì)于從父進(jìn)程到子進(jìn)程的管道,父進(jìn)程關(guān)閉管道的讀端(fd[0]),子進(jìn)程關(guān)閉管道的寫端(fd[1])。

          有名管道:

              有名管道與無名管道的區(qū)別在于有名管道可以根據(jù)相同路徑在多個(gè)進(jìn)程中(mkfifo)相同的管道句柄,然后根據(jù)這個(gè)句柄就可以使用file的操作(open,read,write)進(jìn)行管道數(shù)據(jù)的讀寫了。從代碼中注意的是打開管道的有阻塞和非阻塞方式。



          管道進(jìn)階



          對(duì)于管道的使用有以下幾點(diǎn):

          • 讀端不讀,寫端一直寫。導(dǎo)致管道寫滿,當(dāng)再次往管道里面寫時(shí),會(huì)導(dǎo)致阻塞直到有空間才會(huì)返回(設(shè)置非阻塞方式除外)。

          • 寫端不寫,但是讀端一直讀,導(dǎo)致管道為空,當(dāng)從管道里面讀時(shí),會(huì)導(dǎo)致阻塞直到有數(shù)據(jù)才會(huì)返回(設(shè)置非阻塞方式除外)

          • 讀端一直讀,且fd[0]保持打開,而寫端寫了一部分?jǐn)?shù)據(jù)不寫了,并且關(guān)閉fd[1]。

          • 讀端讀了一部分?jǐn)?shù)據(jù),不讀了且關(guān)閉fd[0],寫端一直在寫且f[1]還保持打開狀態(tài)。


          end




          IPC-共享內(nèi)存

          IPC-信號(hào)量

          IPC-消息隊(duì)列

          Linux下的多進(jìn)程編程

          專注音視頻技術(shù)

          編程語言學(xué)習(xí)筆記以及互聯(lián)網(wǎng)信息分享與交流

          掃碼關(guān)注



          瀏覽 53
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  人妻夜夜爽天天爽麻豆三区网站 | 操逼视频欧美国产 | 北条麻妃无码中文 | 国产综合精品久久久久成人AV | 久久精品蜜桃 |