linux c 守護進程

不用多介紹,網上一搜一大把,記在這裏只爲日後查找方便


 其實守護進程就是一個啥也不幹的進程,不會因爲種種原因而導致進程崩潰,確保自始至終都在運行;而它唯一干的事情就是看着另一個進程,當收到那個進程崩潰的信息時再啓動之!

   

   

#include 
#include 
#include 
#include 
#include

void init_daemon(void)
{
int pid;
int i;

if(pid=fork())
exit(0);//是父進程,結束父進程
else if(pid< 0)
exit(1);//fork失敗,退出
//是第一子進程,後臺繼續執行

setsid();//第一子進程成爲新的會話組長和進程組長
//並與控制終端分離
if(pid=fork())
exit(0);//是第一子進程,結束第一子進程
else if(pid< 0)
exit(1);//fork失敗,退出
//是第二子進程,繼續
//第二子進程不再是會話組長

for(i=0;i< NOFILE;++i)//關閉打開的文件描述符
close(i);
chdir("/tmp");//改變工作目錄到/tmp
umask(0);//重設文件創建掩模
return;
}


 在main函數中執行

    init_daemon();//初始化爲Daemon

    就可以把進程變成守護進程


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章