在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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

            3.使用實(shí)例

            下面的實(shí)例包含了兩個(gè)程序,一個(gè)用于讀,另一個(gè)用于寫。其中在讀的程序里創(chuàng)建管道,并且作為main()函數(shù)里的參數(shù)由用戶輸入要寫入的內(nèi)容。讀管道的程序會(huì)讀出用戶寫入到管道的內(nèi)容,這兩個(gè)程序采用的是阻塞式讀寫管道模式。

            以下是寫管道的程序:

            /*fifo_write.c*/

            #includesys/types.h>

            #includesys/stat.h>

            #includeerrno.h>

            #includefcntl.h>

            #includestdio.h>

            #includestdlib.h>

            #includelimits.h>

            #defineMYFIFO/tmp/myfifo/*有名管道文件名*/

            #defineMAX_BUFFER_SIZEPIPE_BUF/*定義在于limits.h中*/

            intmain(intargc,char*argv[])/*參數(shù)為即將寫入的字符串*/

            {

            intfd;

            charbuff[MAX_BUFFER_SIZE];

            intnwrite;

            if(argc=1)

            {

            printf(Usage:./fifo_writestringn);

            exit(1);

            }

            sscanf(argv[1],%s,buff);

            /*以只寫阻塞方式打開FIFO管道*/

            fd=open(MYFIFO,O_WRONLY);

            if(fd==-1)

            {

            printf(Openfifofileerrorn);

            exit(1);

            }

            /*向管道中寫入字符串*/

            if((nwrite=write(fd,buff,MAX_BUFFER_SIZE))>0)

            {

            printf(Write'%s'toFIFOn,buff);

            }

            close(fd);

            exit(0);

            }

            以下是讀管道程序:

            /*fifo_read.c*/

            (頭文件和宏定義同fifo_write.c)

            intmain()

            {

            charbuff[MAX_BUFFER_SIZE];

            intfd;

            intnread;

            /*判斷有名管道是否已存在,若尚未創(chuàng)建,則以相應(yīng)的權(quán)限創(chuàng)建*/

            if(access(MYFIFO,F_OK)==-1)

            {

            if((mkfifo(MYFIFO,0666)0)(errno!=EEXIST))

            {

            printf(Cannotcreatefifofilen);

            exit(1);

            }

            }

            /*以只讀阻塞方式打開有名管道*/

            fd=open(MYFIFO,O_RDONLY);

            if(fd==-1)

            {

            printf(Openfifofileerrorn);

            exit(1);

            }

            while(1)

            {

            memset(buff,0,sizeof(buff));

            if((nread=read(fd,buff,MAX_BUFFER_SIZE))>0)

            {

            printf(Read'%s'fromFIFOn,buff);

            }

            }

            close(fd);

            exit(0);

            }

            為了能夠較好地觀察運(yùn)行結(jié)果,需要把這兩個(gè)程序分別在兩個(gè)終端里運(yùn)行,在這里首先啟動(dòng)讀管道程序。讀管道在建立管道之后就開始循環(huán)地從管道里讀出內(nèi)容,如果沒(méi)有數(shù)據(jù)可讀,則一直阻塞到寫管道向管道寫入數(shù)據(jù)。在啟動(dòng)了寫管道程序后,讀能夠從管道里讀出用戶的輸入內(nèi)容,程序運(yùn)行結(jié)果如下所示。

            終端一:

            $./fifo_read

            Read'FIFO'fromFIFO

            Read'Test'fromFIFO

            Read'Program'fromFIFO

            ……

            終端二:

            $./fifo_writeFIFO

            Write'FIFO'toFIFO

            $./fifo_writeTest

            Write'Test'toFIFO

            $./fifo_writeProgram

            Write'Program'toFIFO

            ……

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

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


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


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



            上一頁(yè) 1 2 3 4 5 下一頁(yè)

            評(píng)論


            相關(guān)推薦

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

            關(guān)閉