色偷偷偷亚洲综合网另类,亚洲欧美另类在线观看,欧美午夜激情在线,久久久精品一区


實驗:編寫守護進程

分享到:
           

    1.實驗目的

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

    2.實驗內容

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

    3.實驗步驟

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


圖1 實驗流程圖

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

    /* 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;

        /* 創建子進程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);

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

        /* 創建子進程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 ");
            /* 關閉日志服務 */
            closelog();
            while(1)
            {
                sleep(10);
            }
        }
    }

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

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

    (4)運行該程序。

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

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

    4.實驗結果

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

    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可看到如下結果:

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

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

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

   熱點鏈接:

   1、Linux守護進程
   2、Linux下多進程編程之exec函數語法及使用實例
   3、Linux下多進程編程之fork()函數語法
   4、Linux下多進程編程之fork()函數說明
   5、Linux下進程的內存結構

更多新聞>> 

色偷偷偷亚洲综合网另类,亚洲欧美另类在线观看,欧美午夜激情在线,久久久精品一区
主站蜘蛛池模板: 岛国精品视频在线播放| 欧美最近摘花xxxx摘花| 精品福利在线视频| 九九热精品视频在线播放| 久久91亚洲人成电影网站| 欧美日韩国产页| 96精品视频在线| 亚洲人成在线免费观看| 亚洲视频欧美视频| 久久久国产成人精品| 亚洲精品欧美一区二区三区| 成人av电影天堂| 国产丝袜精品第一页| 色偷偷9999www| 日韩欧美在线视频观看| 欧美在线观看日本一区| 国产日韩av高清| 亚洲美女福利视频网站| 久久在线精品视频| 日本久久精品视频| 亚洲国产成人av在线| 色婷婷av一区二区三区在线观看| 欧美精品中文字幕一区| 亚洲高清av在线| 欧美裸体xxxx极品少妇软件| 久久久亚洲影院| 91精品久久久久久久久久另类| 亚洲欧洲xxxx| 色综合久久88色综合天天看泰| 国产亚洲精品va在线观看| 精品久久久久久久久中文字幕| 欧美有码在线视频| 日韩精品在线播放| 日韩欧亚中文在线| 亚洲精品欧美极品| 黄网站色欧美视频| 成人亚洲欧美一区二区三区| 久久精品夜夜夜夜夜久久| 国产国语videosex另类| 中国china体内裑精亚洲片| 91高清视频免费观看|