1.创建子进程 fork
2.子进程创建新会话 setsid()
3.改变进程的工作目录 chdir()
4.指定文件掩码 umask()
5 将文件描述符0\1\2重定向 /dev/null dup2()
6.守护进程逻辑
7.退出。。。一般不用
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>
void mydaemond()
{
pid_t pid,sid;
int ret;
pid=fork();
if(pid<0)
{
perror("fork");
exit(1);
}
else if(pid==0)
{
sid= setsid();
ret=chdir("/home/he/");
if(ret<0)
{
perror("chdir");
exit(1);
}
umask(0002);
close(STDIN_FILENO);
open("/dev/null",O_RDWR);
dup2(0,STDOUT_FILENO);
dup2(0,STDERR_FILENO);
}
}
int main()
{
mydaemond();
while(1)
{
;
}
return 0;
}