Linux程序學習 孤兒程序和守護程序

2021-07-12 02:39:37 字數 905 閱讀 5253

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 殭屍程序 子程序結束後的狀態,取決於該子程序結束時,其父程序的狀態 如果子程序結束時,其父程序還沒有結束,...