在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            進(jìn)程間通信之:管道

            作者: 時(shí)間:2013-09-13 來(lái)源:網(wǎng)絡(luò) 收藏

            本文引用地址:http://www.biyoush.com/article/257127.htm

            8.2.5FIFO

            1.有名說(shuō)明

            前面介紹的是無(wú)名,它只能用于具有親緣關(guān)系的之間,這就大大地限制了管道的使用。有名管道的出現(xiàn)突破了這種限制,它可以使互不相關(guān)的兩個(gè)實(shí)現(xiàn)彼此通信。該管道可以通過(guò)路徑名來(lái)指出,并且在文件系統(tǒng)中是可見的。在建立了管道之后,兩個(gè)就可以把它當(dāng)作普通文件一樣進(jìn)行讀寫操作,使用非常方便。不過(guò)值得注意的是,F(xiàn)IFO是嚴(yán)格地遵循先進(jìn)先出規(guī)則的,對(duì)管道及FIFO的讀總是從開始處返回?cái)?shù)據(jù),對(duì)它們的寫則把數(shù)據(jù)添加到末尾,它們不支持如lseek()等文件定位操作。

            有名管道的創(chuàng)建可以使用函數(shù)mkfifo(),該函數(shù)類似文件中的open()操作,可以指定管道的路徑和打開的模式。

            小知識(shí)

            用戶還可以在命令行使用“mknod管道名p”來(lái)創(chuàng)建有名管道。

            在創(chuàng)建管道成功之后,就可以使用open()、read()和write()這些函數(shù)了。與普通文件的開發(fā)設(shè)置一樣,對(duì)于為讀而打開的管道可在open()中設(shè)置O_RDONLY,對(duì)于為寫而打開的管道可在open()中設(shè)置O_WRONLY,在這里與普通文件不同的是阻塞問(wèn)題。由于普通文件的讀寫時(shí)不會(huì)出現(xiàn)阻塞問(wèn)題,而在管道的讀寫中卻有阻塞的可能,這里的非阻塞標(biāo)志可以在open()函數(shù)中設(shè)定為O_NONBLOCK。下面分別對(duì)阻塞打開和非阻塞打開的讀寫進(jìn)行討論。

            (1)對(duì)于讀進(jìn)程。

            n 若該管道是阻塞打開,且當(dāng)前FIFO內(nèi)沒有數(shù)據(jù),則對(duì)讀進(jìn)程而言將一直阻塞到有數(shù)據(jù)寫入。

            n 若該管道是非阻塞打開,則不論FIFO內(nèi)是否有數(shù)據(jù),讀進(jìn)程都會(huì)立即執(zhí)行讀操作。即如果FIFO內(nèi)沒有數(shù)據(jù),則讀函數(shù)將立刻返回0。

            (2)對(duì)于寫進(jìn)程。

            n 若該管道是阻塞打開,則寫操作將一直阻塞到數(shù)據(jù)可以被寫入。

            n 若該管道是非阻塞打開而不能寫入全部數(shù)據(jù),則讀操作進(jìn)行部分寫入或者調(diào)用失敗。

            2.mkfifo()函數(shù)格式

            表8.4列出了mkfifo()函數(shù)的語(yǔ)法要點(diǎn)。

            表8.4 mkfifo()函數(shù)語(yǔ)法要點(diǎn)

            所需頭文件

            #includesys/types.h>
            #includesys/state.h>

            函數(shù)原型

            intmkfifo(constchar*filename,mode_tmode)

            函數(shù)傳入值

            filename:要?jiǎng)?chuàng)建的管道

            函數(shù)傳入值

            mode:

            O_RDONLY:讀管道

            O_WRONLY:寫管道

            O_RDWR:讀寫管道

            O_NONBLOCK:非阻塞

            函數(shù)傳入值

            mode:

            O_CREAT:如果該文件不存在,那么就創(chuàng)建一個(gè)新的文件,并用第三個(gè)參數(shù)為其設(shè)置權(quán)限

            O_EXCL:如果使用O_CREAT時(shí)文件存在,那么可返回錯(cuò)誤消息。這一參數(shù)可測(cè)試文件是否存在

            函數(shù)返回值

            成功:0

            出錯(cuò):-1

            表8.5再對(duì)FIFO相關(guān)的出錯(cuò)信息做一歸納,以方便用戶查錯(cuò)。

            表8.5 FIFO相關(guān)的出錯(cuò)信息

            EACCESS

            參數(shù)filename所指定的目錄路徑無(wú)可執(zhí)行的權(quán)限

            EEXIST

            參數(shù)filename所指定的文件已存在

            ENAMETOOLONG

            參數(shù)filename的路徑名稱太長(zhǎng)

            ENOENT

            參數(shù)filename包含的目錄不存在

            ENOSPC

            文件系統(tǒng)的剩余空間不足

            ENOTDIR

            參數(shù)filename路徑中的目錄存在但卻非真正的目錄

            EROFS

            參數(shù)filename指定的文件存在于只讀文件系統(tǒng)內(nèi)

            linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

            linux相關(guān)文章:linux教程


            數(shù)字通信相關(guān)文章:數(shù)字通信原理


            通信相關(guān)文章:通信原理




            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉