6具體函式實現:
編寫乙個守護程序要包括兩部分:主程式 test.c 和初始化程式 init.c 。
初始化程式中的 init_daemon 函式負責生成守護程序。利用 init_daemon 函式可以生成自己的守護程序。
daemon.c
1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 8 int init_daemon(void)
9 17 else if(pid < 0)
20 /*第二步建立乙個新的程序組,在這個新的程序組中,子程序成為這個程序組的首程序,以使該程序脫離所用終端*/
21 setsid();
22 /*再次新建乙個子程序,退出父程序,保證該程序不是程序組長,同時讓該程序無法再開啟乙個新的終端*/
23 pid = fork();
24 if(pid > 0)
27 else if(pid < 0)
30 //第三步:關閉所用從父程序繼承的不再需要的檔案描述符
31 for(i = 0;i < nofile;close(i++));
32 //第四步:改變工作目錄,使得程序不與任何檔案系統聯絡
33 chdir("/");
34 //第五步:將檔案遮蔽字設定為0
35 umask(0);
36 //第六步:忽略sigchld訊號
37 signal(sigchld,sig_ign);
38 return 0;
39 }
Linux殭屍程序和孤兒程序
程式執行到結尾的時候,有兩種情況。子程序先退出,或者父程序先退出。如果父程序先退出的話,那麼子程序就會變成孤兒程序,最後被init接管,我們來看乙個例子。我們可以看到子程序的父程序變成了init,孤兒程序並不可怕,它們最後會被統一銷毀。但是如果子程序先退出呢?子程序先退出有兩種情況 1.呼叫wait...
linux下殭屍程序和孤兒程序
子程序是通過父程序建立的,子程序也可以繼續建立子程序。父程序無法 子程序到底什麼時候結束,當乙個子程序結束之後,它的父程序需要呼叫wait 或者waitpid 系統呼叫取得子程序的終止狀態。殭屍程序 子程序結束了,但是父程序沒有呼叫wait 或者waitpid 取得子程序的終止狀態,這個子程序將變成...
Linux 孤兒程序和殭屍程序 淺見
孤兒程序與殭屍程序 什麼是孤兒程序 殭屍程序 1 孤兒程序 父程序先結束,則其子程序變成 孤兒程序 變成孤兒程序之後,該程序由init接管並清理 認init作為父程序 例項 main1.c 2 殭屍程序 子程序結束後的狀態,取決於該子程序結束時,其父程序的狀態 如果子程序結束時,其父程序還沒有結束,...