IT培训机构|91免费精品视频|专注编程培训|91免费精品|软件开发培训_91免费国产视频_华清远见教育


標(biāo)準(zhǔn)流管道

分享到:
           

    本文關(guān)鍵字: linux 管道通信,linux 進(jìn)程通信方式 ,標(biāo)準(zhǔn)流管道

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

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

    ● 創(chuàng)建一個(gè)管道。
    ● fork()一個(gè)子進(jìn)程。
    ● 在父子進(jìn)程中關(guān)閉不需要的文件描述符。
    ● 執(zhí)行exec函數(shù)族調(diào)用。
    ● 執(zhí)行函數(shù)中所指定的命令。

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

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

    2.函數(shù)格式

    popen()和pclose()函數(shù)語(yǔ)法要點(diǎn)如表1和表2所示。

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

所需頭文件 #include <stdio.h>
函數(shù)原型 FILE *popen(const char *command, const char *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

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

所需頭文件 #include <stdio.h>
函數(shù)原型 int pclose(FILE *stream)
函數(shù)傳入值 stream:要關(guān)閉的文件流
函數(shù)返回值 成功:返回由popen()所執(zhí)行的進(jìn)程的退出碼
出錯(cuò):-1

    3.使用實(shí)例

    在該實(shí)例中,使用popen()來(lái)執(zhí)行“ps -ef”命令。可以看出,popen()函數(shù)的使用能夠使程序變得短小精悍。

    /* standard_pipe.c */
    #include <stdio.h>
    #include <unistd.h>
    #include <stdlib.h>
    #include <fcntl.h>
    #define BUFSIZE 1024

    int main()
    {
        FILE *fp;
        char *cmd = "ps -ef";
        char buf[BUFSIZE];

        if ((fp = popen(cmd, "r")) == NULL) /* 調(diào)用popen()函數(shù)執(zhí)行相應(yīng)的命令 */
        {
            printf("Popen error\n");
            exit(1);
        }
        while ((fgets(buf, BUFSIZE, fp)) != NULL)
        {
            printf("%s",buf);
        }
        pclose(fp);
        exit(0);
    }

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

    $ ./standard_pipe
    PID TTY        Uid        Size  State  Command
    1              root       1832   S     init
    2              root        0     S     [keventd]
    …
    74             root       1284   S     ./standard_pipe
    75             root       1836   S     sh -c ps -ef
    76             root       2020   R     ps –ef

    本文選自華清遠(yuǎn)見(jiàn)嵌入式培訓(xùn)教材《從實(shí)踐中學(xué)嵌入式Linux應(yīng)用程序開(kāi)發(fā)》

   熱點(diǎn)鏈接:

   1、無(wú)名管道系統(tǒng)調(diào)用
   2、Linux下進(jìn)程間通信方式-管道
   3、Linux下進(jìn)程間通信
   4、實(shí)驗(yàn):編寫(xiě)守護(hù)進(jìn)程
   5、實(shí)驗(yàn):編寫(xiě)多進(jìn)程程序

更多新聞>> 

主站蜘蛛池模板: 呼吸家官网|肺功能检测仪生产厂家|国产肺功能仪知名品牌|肺功能检测仪|肺功能测试仪|婴幼儿肺功能仪|弥散残气肺功能仪|肺功能测试系统|广州红象医疗科技有限公司|便携式肺功能仪|大肺功能仪|呼吸康复一体机|儿童肺功能仪|肺活量计|医用简易肺功能仪|呼吸康复系统|肺功能仪|弥散肺功能仪(大肺)|便携式肺功能检测仪|肺康复|呼吸肌力测定肺功能仪|肺功能测定仪|呼吸神经肌肉刺激仪|便携式肺功能 | 泥沙泵_脱硫泵_潜水泵_离心泵_渣浆泵厂家|诚信为先-泰安华泰泵业制造有限公司 | 宁波管道安装_宁波工业冷风机_宁波冷风机厂家_宁波厂房通风降温_「浙江甬风机电」 | 上海层傲传动设备有限公司 - 工业皮带,输送带,传动带 | 江门市东信科技 - 江门小程序开发,江门网站制作,江门软件开发,江门app开发 | 优质课网_收录全国及各省市最新优质课视频,说课视频,名师课例课堂实录,高效课堂教学视频,观摩展示公开示范优秀课视频,教学大赛视频! | 苏州纸袋印刷_药袋、纸袋定制厂家_苏州嘉奕达印刷包装厂 | 软文营销推广-新闻稿发布-软文撰写-百科词条编辑-品牌全案策划推广网络营销传播-喜尚传媒 | 立式/卧式/潜水/液下/螺杆/耐磨/渣浆泵|泥浆泵|离心泵,厂家 - 河北聚盛泵业制造有限公司 | 微EAM - EHS安全管理系统-设备管理系统-设备全生命周期管理软件-HSE安全管理软件 | 河北伟业波纹管-百顺牌波纹补偿器(波纹管,膨胀节,伸缩节)、非金属补偿器 | 紫铜箔(带)导电胶带定做,定做紫铜箔(带)导电胶带厂家[价格]-艾飞敏铜箔 | 宿迁市华泰交通设施有限公司,上海第四代路名牌,天津仿罗马柱路名牌,标准路名牌,路名牌灯箱,公交站台,户外广告灯箱, 交通标志牌,社区阅报栏 | 名片印刷,名片制作,名片设计,印刷彩色名片,数码快印名片-北京瑞思凯信息咨询公司 | 机器人码垛机-纸箱套袋机-水平缠绕机-贴标机-开箱机-装盒机-杭州贝立智能设备有限公司 | 运动控制器_数控系统_廊坊市九盈数控技术公司「官网」 | 喷涂陶瓷涂层_热喷涂陶瓷涂层-北京耐默公司 | 轻触开关,拨动开关,德艺隆(DEALON)精密工业股份有限公司 | 直流电机调速器,直流电机控制器,直流电机调速电源-淄博诚铖创惠电子有限公司 | 深圳专卖店设计,餐饮空间设计,酒店空间策划设计【左右高端人文空间设计公司】 | 上海栋彤物流有限公司-可信赖的物流服务提供商 | 射频导纳物位开关|雷达液位计|安全光栅光幕传感器|音叉料位开关|两级跑偏开关|双向拉绳开关|纵向撕裂保护装置-山东卓信机械有限公司 | 智能试剂柜-疾控|高校实验室|医院药品智能试剂管理柜-北京晶品赛思 | 济南时代,济南时代试验机,试金老品牌-济南时代试验机技术有限公司 | 文化艺术网-专注文化,服务艺术 温州网络公司_网站建设_网络营销策划_阿里淘宝店铺服务-温州聚欣网络科技有限公司 | 离子交换树脂_阴离子交换树脂_阳离子交换树脂-中国树脂网 | 液化气密度测定仪,原油有机氯测定仪-泰州市姜堰分析仪器厂 | 斜管填料_斜板填料_纤维球_果壳活性炭_立体网状填料_纤维球厂家-巩义市德科净水材料有限公司 | 搅拌摩擦焊-搅拌摩擦焊接机床-搅拌摩擦焊设备厂家-精科大恒 | 日本进口东丽碳纤维材料-上海久扶新材料科技有限公司 | 威学一百-专注国际学校择校备考-DSE-A-level-雅思-托福-OSSD-港澳台联考-AP-IGCSE-IB-AMC-多邻国-PTE-SAT-SSAT-小语种(如日语,韩语,德语,法语,西班牙语,意大利语,俄语,泰语)等考试培训,为出国留学学生提供个性化定制性学习方案,线下实体面授+线上网络课程, 提供一对一,小班课等多种班型 | 视觉检测设备_CCD光学筛选机_分度盘光学筛选机-无锡精质智能装备 | 气动量仪厂家-郑州华峰仪器有限公司| 徐州户外广告,标识标牌,展陈空间,精神堡垒-徐州雅努思文化发展有限公司 | 精品中文字幕在线观看,粉嫩av一区二区三区,最近中文字幕在线看免费视频,亚洲高清在线观看,日本一区二区视频手机免费看,国产黄色小视频,亚洲高清免费视频,国产精品一区二区欧美视频,亚洲人免费视频,亚洲视频在线观看免费,国产免费高清综合视频,中文字幕永久在线 | 图页网-无线压力电容变送器_激光测厚传感器_电磁流量计_温控调节仪 | 垃圾桶_垃圾桶厂家_临沂市旭宏塑料有限公司 | 实验室超纯水机-超纯水机-超纯水仪-上海赫恩实业有限公司 | 快达物流:电商和微商的仓储物流外包和托管服务-北京快达国际物流服务有限公司官方网站 | 家具板|橱柜衣柜家具板|木饰面定制|榉木胶合板|防水胶合板|胶合板厂家-佛山吉盛唐朝木业-大坂木业 | 人工气候-智能-低温生化培养箱厂家|价格-上海予卓仪器 |