![]() |
|
實(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所示。
(2)實(shí)驗(yàn)源代碼。具體代碼設(shè)置如下: /* daemon_proc.c */ (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 讀者可以從時(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)程 |