守護進程是在後臺運行,不受用戶的控制;守護進程沒有任何存在的父進程。如果一個進程想成爲守護進程,有fork()創建;然後終止父進程,脫離資源。
例子:
void init_daemon()
{
int pid,i;
pid = fork();
if(pid)
exit(0);//結束父進程
else
exit(1);//失敗退出
//是子進程成爲組長
setid();
for(i=0;i< NOFILE;++i)//關閉打開的文件描述符
close(i);
chdir("/tmp");//改變工作目錄到/tmp
umask(0);//重設文件創建掩模
return;
}