• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            進程間通信——FIFO

            Posted on 2009-07-18 13:52 天邊藍 閱讀(1280) 評論(0)  編輯 收藏 引用 所屬分類: Linux

            FIFO簡介
            為了解決匿名管道的限制,Linux特地提出了FIFO管道,即有名管道。FIFO十通過文件來傳輸數(shù)據(jù)的,但其具有匿名管道的特性——在讀出數(shù)據(jù)時,F(xiàn)IFO同事清理管道為空。

            創(chuàng)建FIFO管道
                    $mkfifo –m 600 fifocat
                          #include <sys/stat.h>
                          #include <sys/types.h>
                          int mkfifo( const char *filename, mode_t mode );
                     參數(shù)說明:mode指定FIFO的讀寫權限,新創(chuàng)建FIFO的用戶ID和組ID規(guī)則。與open函數(shù)相同。
               參數(shù)mode 則有下列數(shù)種組合,只有在建立新文件時才會生效,此外真正建文件時的權限會受到umask值所影響,因此該文件權限應該為(mode-umaks)。
            S_IRWXU00700 權限,代表該文件所有者具有可讀、可寫及可執(zhí)行的權限。
            S_IRUSR 或S_IREAD,00400權限,代表該文件所有者具有可讀取的權限。
            S_IWUSR 或S_IWRITE,00200 權限,代表該文件所有者具有可寫入的權限。
            S_IXUSR 或S_IEXEC,00100 權限,代表該文件所有者具有可執(zhí)行的權限。
            S_IRWXG 00070權限,代表該文件用戶組具有可讀、可寫及可執(zhí)行的權限。
            S_IRGRP 00040 權限,代表該文件用戶組具有可讀的權限。
            S_IWGRP 00020權限,代表該文件用戶組具有可寫入的權限。
            S_IXGRP 00010 權限,代表該文件用戶組具有可執(zhí)行的權限。
            S_IRWXO 00007權限,代表其他用戶具有可讀、可寫及可執(zhí)行的權限。
            S_IROTH 00004 權限,代表其他用戶具有可讀的權限
            S_IWOTH 00002權限,代表其他用戶具有可寫入的權限。
            S_IXOTH 00001 權限,代表其他用戶具有可執(zhí)行的權限。
                    %注意:當要創(chuàng)建一個已經(jīng)存在的FIFO時,程序會產(chǎn)生一個EEXIST的異常

            FIFO讀寫操作
                    般的I/O(open close read write unlink)函數(shù)都可以用于FIFO文件,需要注意的是,在使用open函數(shù)打開一個FIFO文件時,open函數(shù)參數(shù)flag標志位的O_NONBLOCK標志,它關系到函數(shù)的返回狀態(tài)。詳細說明如表14-2所示。
            表14-2 open函數(shù)的flag(O_NONBLOCK)詳細說明
            O_NONBLOCK標志
            詳 細 說 明
            置位
            只讀open立即返回。當只寫open時,如果沒有進程為讀打開FIFO,則返回–1,并置errno值為ENXIO
            不置位
            open視情況阻塞。只讀open要阻塞到有進程為寫打開FIFO,只寫open要阻塞到有進程為讀打開FIFO


                   FIFO的寫操作規(guī)則類似于匿名管道的寫操作規(guī)則,當沒有進程為讀打開FIFO,調(diào)用write函數(shù)來進行寫操作會產(chǎn)生信號SIGPIPE,則信號可以被捕捉或者完全忽略。
                    %注意:當FIFO的所有寫進程都已經(jīng)關閉,則為FIFO的讀進程產(chǎn)生一個文件結束符。


            FIFO的缺點
                    當然FIFO也有它的局限性,如圖14-6所示。客戶端可以發(fā)請求到服務器,但前提是要知道一個公共的FIFO通道,對于實現(xiàn)服務器回傳應答到客戶端的問題,可以通過為每一個客戶端創(chuàng)建一個專用的FIFO,來實現(xiàn)回傳應答。但也有不足,服務器會同時應答成千上萬個客戶端,創(chuàng)建如此多的FIFO是否會使系統(tǒng)負載過大,相應的如何判斷客戶端是否因意外而崩潰成為難題,或者客戶端不讀取應答直接退出,所以服務器必須處理SIGPIPE信號,并做相應處理。

            Copyright © 天邊藍

            久久久久国色AV免费观看| 久久精品人人槡人妻人人玩AV| 国产精品久久网| 久久九九久精品国产| 超级碰碰碰碰97久久久久| 久久久久久久亚洲Av无码| 99久久国语露脸精品国产| 久久久久99精品成人片牛牛影视| 久久青青草视频| 久久久久四虎国产精品| 久久久久久无码国产精品中文字幕| 精品一二三区久久aaa片| 97久久久精品综合88久久| 青青青青久久精品国产h久久精品五福影院1421| 国产亚洲色婷婷久久99精品91| 超级97碰碰碰碰久久久久最新| 韩国三级大全久久网站| 精品久久久无码人妻中文字幕| 久久精品国产欧美日韩| 久久国产精品99国产精| 亚洲精品乱码久久久久66| 久久久国产精品| 国产精品美女久久久久AV福利| 精品久久久久久中文字幕人妻最新| 久久综合五月丁香久久激情| 色噜噜狠狠先锋影音久久| 久久久久无码精品国产不卡| 中文字幕精品无码久久久久久3D日动漫| 狠狠色丁香婷综合久久| 久久久噜噜噜久久熟女AA片| 亚洲中文字幕无码久久综合网| 久久九九久精品国产| 久久免费视频一区| 久久久久久国产a免费观看不卡| 精品亚洲综合久久中文字幕| 精品久久久久久久无码| 一本久久a久久精品vr综合| 色狠狠久久AV五月综合| 久久婷婷五月综合97色| jizzjizz国产精品久久| 精品久久久久久亚洲精品 |