在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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.4標(biāo)準(zhǔn)流

            1.標(biāo)準(zhǔn)流函數(shù)說(shuō)明

            的文件操作中有基于文件流的標(biāo)準(zhǔn)I/O操作一樣,的操作也支持基于文件流的模式。這種基于文件流的管道主要是用來(lái)創(chuàng)建一個(gè)連接到另一個(gè)的管道,這里的“另一個(gè)”也就是一個(gè)可以進(jìn)行一定操作的可執(zhí)行文件,例如,用戶(hù)執(zhí)行“ls-l”或者自己編寫(xiě)的程序“./pipe”等。由于這一類(lèi)操作很常用,因此標(biāo)準(zhǔn)流管道就將一系列的創(chuàng)建過(guò)程合并到一個(gè)函數(shù)popen()中完成。它所完成的工作有以下幾步。

            n 創(chuàng)建一個(gè)管道。

            n fork()一個(gè)子。

            n 在父子進(jìn)程中關(guān)閉不需要的文件描述符。

            n 執(zhí)行exec函數(shù)族調(diào)用。

            n 執(zhí)行函數(shù)中所指定的命令。

            這個(gè)函數(shù)的使用可以大大減少代碼的編寫(xiě)量,但同時(shí)也有一些不利之處,例如,它不如前面管道創(chuàng)建的函數(shù)那樣靈活多樣,并且用popen()創(chuàng)建的管道必須使用標(biāo)準(zhǔn)I/O函數(shù)進(jìn)行操作,但不能使用前面的read()、write()一類(lèi)不帶緩沖的I/O函數(shù)。

            與之相對(duì)應(yīng),關(guān)閉用popen()創(chuàng)建的流管道必須使用函數(shù)pclose()來(lái)關(guān)閉該管道流。該函數(shù)關(guān)閉標(biāo)準(zhǔn)I/O流,并等待命令執(zhí)行結(jié)束。

            2.函數(shù)格式

            popen()和pclose()函數(shù)格式如表8.2和表8.3所示。

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

            所需頭文件

            #includestdio.h>

            函數(shù)原型

            FILE*popen(constchar*command,constchar*type)

            函數(shù)傳入值

            command:指向的是一個(gè)以null結(jié)束符結(jié)尾的字符串,這個(gè)字符串包含一個(gè)shell命令,并被送到/bin/sh以-c參數(shù)執(zhí)行,即由shell來(lái)執(zhí)行

            type:

            “r”:文件指針連接到command的標(biāo)準(zhǔn)輸出,即該命令的結(jié)果產(chǎn)生輸出
            “w”:文件指針連接到command的標(biāo)準(zhǔn)輸入,即該命令的結(jié)果產(chǎn)生輸入

            函數(shù)返回值

            成功:文件流指針

            出錯(cuò):-1

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

            所需頭文件

            #includestdio.h>

            函數(shù)原型

            intpclose(FILE*stream)

            函數(shù)傳入值

            stream:要關(guān)閉的文件流

            函數(shù)返回值

            成功:返回由popen()所執(zhí)行的進(jìn)程的退出碼

            出錯(cuò):-1

            3.函數(shù)使用實(shí)例

            在該實(shí)例中,使用popen()來(lái)執(zhí)行“ps-ef”命令??梢钥闯觯琾open()函數(shù)的使用能夠使程序變得短小精悍。

            /*standard_pipe.c*/

            #includestdio.h>

            #includeunistd.h>

            #includestdlib.h>

            #includefcntl.h>

            #defineBUFSIZE1024

            intmain()

            {

            FILE*fp;

            char*cmd=ps-ef;

            charbuf[BUFSIZE];

            /*調(diào)用popen()函數(shù)執(zhí)行相應(yīng)的命令*/

            if((fp=popen(cmd,r))==NULL)

            {

            printf(Popenerrorn);

            exit(1);

            }

            while((fgets(buf,BUFSIZE,fp))!=NULL)

            {

            printf(%s,buf);

            }

            pclose(fp);

            exit(0);

            }

            下面是該程序在目標(biāo)板上的執(zhí)行結(jié)果。

            $./standard_pipe

            PIDTTYUidSizeStateCommand

            1root1832Sinit

            2root0S[keventd]

            3root0S[ksoftirqd_CPU0]

            ……

            74root1284S./standard_pipe

            75root1836Ssh-cps-ef

            76root2020Rps–ef

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

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


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


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




            評(píng)論


            相關(guān)推薦

            技術(shù)專(zhuān)區(qū)

            關(guān)閉