|  | |
| 實驗:編寫守護進程 | |
| 1.實驗目的 通過編寫一個完整的守護進程,掌握守護進程編寫和調試的方法,進一步熟悉如何編寫多進程程序。 2.實驗內容 在(zai)該實驗中,首(shou)先創建一個子(zi)(zi)(zi)進(jin)程(cheng)(cheng)(cheng)1(守護(hu)進(jin)程(cheng)(cheng)(cheng)),然后在(zai)該子(zi)(zi)(zi)進(jin)程(cheng)(cheng)(cheng)中新建一個子(zi)(zi)(zi)進(jin)程(cheng)(cheng)(cheng)2,該子(zi)(zi)(zi)進(jin)程(cheng)(cheng)(cheng)2暫停10s,然后自動退出,并(bing)由子(zi)(zi)(zi)進(jin)程(cheng)(cheng)(cheng)1收集子(zi)(zi)(zi)線程(cheng)(cheng)(cheng)退出的(de)消息。在(zai)這里,子(zi)(zi)(zi)進(jin)程(cheng)(cheng)(cheng)1和子(zi)(zi)(zi)進(jin)程(cheng)(cheng)(cheng)2的(de)消息都在(zai)系統日志(zhi)(zhi)文件(如“/var/log/messages”,日志(zhi)(zhi)文件的(de)全(quan)路徑名因Linux版本的(de)不(bu)(bu)同可能會有(you)所不(bu)(bu)同)中輸出。在(zai)向日志(zhi)(zhi)文件寫入消息后,守護(hu)進(jin)程(cheng)(cheng)(cheng)(子(zi)(zi)(zi)進(jin)程(cheng)(cheng)(cheng)1)循環暫停,其(qi)間隔時間為10s。 3.實驗步驟 (1)畫出(chu)該實驗流程(cheng)(cheng)圖(tu)。該程(cheng)(cheng)序(xu)流程(cheng)(cheng)圖(tu)如圖(tu)1所示。 
  (2)實驗源(yuan)代碼(ma)。具體代碼(ma)設置如下(xia):     /* daemon_proc.c */ (3)由于有些(xie)嵌入式開發板沒有syslog服務(wu),讀者可以在(zai)宿主(zhu)機(ji)上編譯(yi)運行,代(dai)碼如(ru)下:   $ gcc daemon_proc.c –o daemon_proc (或者使(shi)用Makefile) (4)運行該程序。   (5)等(deng)待10s后,以(yi)root身份查看系統(tong)日志(zhi)文件(如“/var/log/messages”)。   (6)使用ps-ef | grep daemon_proc查看(kan)該守護進程是否在運行(xing)。 4.實驗結果   (1)在系統日志文件中有類(lei)似如下(xia)的信息顯示:     Jul 20 21:15:08 localhost daemon_proc_info[4940]:  child2 will sleep for 10s  讀者(zhe)可以(yi)從時間戳(chuo)里清楚地看到child2確(que)實暫停了(le)10s。 (2)使用(yong)命令ps-ef | grep daemon_proc可看(kan)到如下結(jie)果(guo): david   4939 1 0 21:15 ? 00:00:00 ./daemon_proc   可見,daemon_proc確實(shi)一直在運行。 本文選自華清遠見嵌入式培訓教材《從實踐中學嵌入式Linux應用程序開發》 熱點鏈接:  
         1、Linux守護進程 |