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


實驗:編寫守護進程

分享到:
           

    1.實驗目的

    通過編寫一個完整的守護進程,掌握守護進程編寫和調(diào)試的方法,進一步熟悉如何編寫多進程程序。

    2.實驗內(nèi)容

    在該實驗中,首先創(chuàng)建一個子進程1(守護進程),然后在該子進程中新建一個子進程2,該子進程2暫停10s,然后自動退出,并由子進程1收集子線程退出的消息。在這里,子進程1和子進程2的消息都在系統(tǒng)日志文件(如“/var/log/messages”,日志文件的全路徑名因Linux版本的不同可能會有所不同)中輸出。在向日志文件寫入消息后,守護進程(子進程1)循環(huán)暫停,其間隔時間為10s。

    3.實驗步驟

    (1)畫出該實驗流程圖。該程序流程圖如圖1所示。


圖1 實驗流程圖

    (2)實驗源代碼。具體代碼設(shè)置如下:

    /* daemon_proc.c */
    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/types.h>
    #include <unistd.h>
    #include <sys/wait.h>
    #include <syslog.h>

    int main(void)
    {
        pid_t child1,child2;
        int i;

        /* 創(chuàng)建子進程1 */
        child1 = fork();
        if (child1 == 1)
        {
            perror("child1 fork");
            exit(1);
        }
        else if (child1 > 0)
        {
            exit(0); /* 父進程退出 */
        }
        /* 打開日志服務 */
        openlog("daemon_proc_info", LOG_PID, LOG_DAEMON);

        /* 以下幾步是編寫守護進程的常規(guī)步驟 */
        setsid();
        chdir("/");
        umask(0);
        for(i = 0; i < getdtablesize(); i++)
        {
            close(i);
        }

        /* 創(chuàng)建子進程2 */
        child2 = fork();
        if (child2 == 1)
        {
            perror("child2 fork");
            exit(1);
        }
        else if (child2 == 0)
        { /* 進程child2 */
            /* 在日志中寫入字符串 */
            syslog(LOG_INFO, " child2 will sleep for 10s ");
            sleep(10);
            syslog(LOG_INFO, " child2 is going to exit! ");
            exit(0);
        }
        else
        { /* 進程child1 */
            waitpid(child2, NULL, 0);
            syslog(LOG_INFO, " child1 noticed that child2 has exited ");
            /* 關(guān)閉日志服務 */
            closelog();
            while(1)
            {
                sleep(10);
            }
        }
    }

    (3)由于有些嵌入式開發(fā)板沒有syslog服務,讀者可以在宿主機上編譯運行,代碼如下:

    $ gcc daemon_proc.c –o daemon_proc (或者使用Makefile)

    (4)運行該程序。

    (5)等待10s后,以root身份查看系統(tǒng)日志文件(如“/var/log/messages”)。

    (6)使用ps-ef | grep daemon_proc查看該守護進程是否在運行。

    4.實驗結(jié)果

    (1)在系統(tǒng)日志文件中有類似如下的信息顯示:

    Jul 20 21:15:08 localhost daemon_proc_info[4940]: child2 will sleep for 10s
    Jul 20 21:15:18 localhost daemon_proc_info[4940]: child2 is going to exit!
    Jul 20 21:15:18 localhost daemon_proc_info[4939]: child1 noticed that child2 has exited

    讀者可以從時間戳里清楚地看到child2確實暫停了10s。

    (2)使用命令ps-ef | grep daemon_proc可看到如下結(jié)果:

    david    4939    1 0 21:15 ?    00:00:00 ./daemon_proc

    可見,daemon_proc確實一直在運行。

    本文選自華清遠見嵌入式培訓教材《從實踐中學嵌入式Linux應用程序開發(fā)》

   熱點鏈接:

   1、Linux守護進程
   2、Linux下多進程編程之exec函數(shù)語法及使用實例
   3、Linux下多進程編程之fork()函數(shù)語法
   4、Linux下多進程編程之fork()函數(shù)說明
   5、Linux下進程的內(nèi)存結(jié)構(gòu)

更多新聞>> 

主站蜘蛛池模板: 精品中文字幕在线观看,粉嫩av一区二区三区,最近中文字幕在线看免费视频,亚洲高清在线观看,日本一区二区视频手机免费看,国产黄色小视频,亚洲高清免费视频,国产精品一区二区欧美视频,亚洲人免费视频,亚洲视频在线观看免费,国产免费高清综合视频,中文字幕永久在线 | 浙江中拓教育设备有限公司| 四川蜀易控科技有限公司-酒店客房控制系统-智慧酒店智能化客房控制系统生产厂家 | 精密铸造,精密铸件,不锈钢铸造,不锈钢铸件-常州鸿雁行机械科技有限公司 | 水上浮筒_塑料浮筒_龙舟码头_浮筒浮动码头-黄山耀利水上设施有限公司 | 深圳理津技术有限公司(REHLOGY)-全球工业品供应商:自动化产品|仪器仪表|设备|备品备件|工具|消耗品|非标设备|建筑工程等一站式综合服务! | 苏子富春品牌馆 抚顺市富春农业科技开发有限公司 抚顺特色农产品 抚顺市特色馆 | 乐清人才网_乐清招聘网_求职找工作平台 | 水环式真空泵-旋片式真空泵-上海飞鲁泵业科技有限公司 | 履带底盘-橡胶履带底盘-无线遥控底盘-德州力维智能装备有限公司 铝压铸件_铝合金压铸件_铝合金压铸件厂家-安平县长虹压铸厂 | 智能访客系统 - 来访登记系统_微信预约系统_人员出入管理系统_访客机_人脸识别系统门禁闸机 | 塑胶跑道厂家_河北小区健身器材_悬浮地板-河北达创体育器材有限公司 | 太原重卡叔叔运输有限公司-山西太原大件运输、太原物流公司、太原货运物流、太原大件运输、太原货运信息、长治物流公司、长治大件运输、晋城物流公司、晋城大件运输、忻州大件运输、朔州大件运输、阳泉大件运输、大同大件运输、吕梁大件运输、临汾大件运输、运城大件运城 | 转轮除湿机,转轮除湿机,恒温恒湿机厂家_合肥铂克环境设备有限公司 | 暖气片厂家_散热器厂家_力春散热器 | 河南反渗透设备,河南纯净水设备,河南软化水设备,郑州EDI超纯水设备,郑州水处理设备厂家_河南江宇环保科技有限公司 | 潍坊卓瑞机械有限公司,输送设备,石灰消化设备,餐厨垃圾设备,化机浆设备,污泥脱水 | 江苏保捷锻压有限公司(中国汽车零部件供应商,锻造,精加工,热处理) | 值得信赖的云计算 - 美儿云互联| 土壤碳通量-土壤水势传感器-涡度相关-北京力高泰科技有限公司 | 扭力扳手_扭力扳手检定仪_数显扭力扳手_扭力测试仪_测力计_推拉力计_拉力测试仪_测试台架-上海实干实业有限公司 | 商标注册_北京商标注册费用_申请商标注册代理机构_北京商标注册公司- | 厦门空压机-厦门空压机出租-厦门钻机出租-厦门岩立盛机电设备有限公司 | 亚澳农机-亚澳南阳农机股份公司,旋耕机,旋播机,旋播施肥机,免耕播种机,旋耕播草多用机,果园机械-首页 | 中科盛世酒窖 - 酒窖设计_酒窖工程_酒窖空调设备_恒温酒柜定制_私人别墅家庭酒窖_不锈钢红酒柜_实木雪茄柜 | 手板机箱_亚克力机箱_医疗机箱_美容机箱_医疗设备外壳厂家_鸿堪医疗器械有限公司 | 青田人才网_青田招聘网_求职找工作平台 | 西安西雷脉冲功率技术有限公司-高压调制器/加速器与脉冲功率系统的研发/生产/应用推广/高压脉冲电源的应用研究/设计/生产和销售/高功率脉冲器件/材料与仪器设备的研发/生产和销售/高电压/大电流/强磁场环境的模拟及测试服务/会议会展服务/货物及进出口的业务/脉冲功率技术领域类的技术转让 | 远东齿轮泵|高粘度齿轮泵|三螺杆油泵|沥青保温泵|高粘度稠油泵-远东泵业官网 | 深圳市金正电器有限公司 | 陕西筱润智能科技有限公司 干部人事智能档案柜 智能密集架 智能档案柜 部队选层文件智能柜 智能枪弹柜 财务智能档案柜 边防武警智能密集架 医院智能档案柜 部队选层文件智能柜智能枪弹柜 学校医院文件柜 企事业单位公检法智能文件柜 生产厂家-筱润智能科技有限公司 RFID射频智能密集架 全自动智能选层档案柜 智能密保柜 枪柜部队营房营具床桌椅办公家具 办公用品档案盒设备货架 全自动智能选层柜生产厂家-筱润智能科技有限公司 | 商标注册_北京商标注册费用_申请商标注册代理机构_北京商标注册公司- | 涂塑复合钢管,大口径涂塑钢管,内外涂塑钢管厂家-沧州友诚管业有限公司 | 金酱酒_金酱酒代理加盟招商_OEM贴牌企业定制! – 金酱酒代理加盟!茅台镇较早的酿酒烧坊,年产优质酱香白酒5000余吨,仁怀市十强白酒企业,主营主品:金酱酒、金酱陈香酒、酱香老酒等系列品牌产品 | 西藏旅游-西藏中旅-西藏中旅国际旅行社 | 河北万岁药业有限公司| 硫酸、硫酸铵、氯磺酸、氯化亚砜、硫酸钾、对位酯生产销售 - 河北和合化工有限公司 | 宁波公司注册_宁波注册公司_宁波代理记账_宁波做内账|安隆会计专业服务机构 | 庭院大门,铝艺大门厂家,别墅庭院大门「免费设计」汉兰达庭院门厂家 | 耐火砖厂家价格-郑州荣盛窑炉耐火材料有限公司 | 襄阳亚舟重型工程机械有限公司 |