色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看


實(shí)驗(yàn):編寫守護(hù)進(jìn)程

分享到:
           

    1.實(shí)驗(yàn)?zāi)康?/strong>

    通過(guò)編寫一個(gè)完整的守護(hù)進(jìn)程,掌握守護(hù)進(jìn)程編寫和調(diào)試的方法,進(jìn)一步熟悉如何編寫多進(jìn)程程序

    2.實(shí)驗(yàn)內(nèi)容

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

    3.實(shí)驗(yàn)步驟

    (1)畫出該實(shí)驗(yàn)流程圖。該程序流程圖如圖1所示。


圖1 實(shí)驗(yàn)流程圖

    (2)實(shí)驗(yàn)源代碼。具體代碼設(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)建子進(jìn)程1 */
        child1 = fork();
        if (child1 == 1)
        {
            perror("child1 fork");
            exit(1);
        }
        else if (child1 > 0)
        {
            exit(0); /* 父進(jìn)程退出 */
        }
        /* 打開日志服務(wù) */
        openlog("daemon_proc_info", LOG_PID, LOG_DAEMON);

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

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

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

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

    (4)運(yùn)行該程序。

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

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

    4.實(shí)驗(yàn)結(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

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

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

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

    可見,daemon_proc確實(shí)一直在運(yùn)行。

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

   熱點(diǎn)鏈接:

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

更多新聞>> 

主站蜘蛛池模板: 爱爱帝国综合 | 亚洲制服丝中文字幕 | 欧美日韩无 | 日日婷婷夜日日天干A片 | 米奇欧美777四色影视在线 | 国产又黄又爽又刺激的免费网址 | 亚洲日韩精品无码专区加勒比☆ | 中文字幕第3页 | 亚洲成在人线在线播放无码 | 日本无遮挡色又黄的视频 | 少妇在宾馆高潮不断狂叫床 | 夜夜高潮次次欢爽AV女 | 午夜AV亚洲一码二中文字幕网址 | 在线播放免费人成视频网站 | 国产精品美乳在线播放 | 日本高清VA在线播放 | 中文字幕欧美久久日高清 | 在线看片免费人成视频久网 | 亚洲精品一区久久狠狠欧美 | 成人性生交A片免费看V | AV一本久道久久波多野结衣 | 亚洲精品乱码久久久久久蜜桃图片 | 特级AV毛片免费观看 | 狼狼综合久久久久综合网 | 91嫩草久久久精品影院 | 中文字幕无线观看中文字幕 | 国产激情久久久久久熟女老人AV | 人人妻人人妻人人片色av | 国产色无码精品视频免费 | 杨幂好大好硬好深好爽想要 | 欧洲s码亚洲m码精品一区 | 久久精品国产亚洲AV麻豆网站 | 狠狠亚洲超碰狼人久久 | 中国白胖bbw熟女多毛 | 伊人久久综合精品一区二区三区 | 日韩精品一区二区大桥未久 | 亚洲精品国产一区二区三区在线观看 | 在线这里只有精品 | 久久精品国产精油按摩 | 国产丝袜无码一区二区三区视频 | 亚洲精品宾馆在线精品酒店 |