五步创建精灵进程
1.精灵进程
精灵进程是运行在后台的进程,它的父进程是1号进程Init;
2.创建步骤
1)消除文件默认权限掩码的影响
umask(0);
2) 创建子进程,并让父进程退出
pid_t pid = fork();
if(pid < 0)
{
exit(-1);
}
else if(pid > 0)
{
exit(0);
}
3) 调用setsid创建一个会话,让子进程成为守护进程
setsid();
4) 将当前工作目录更改为根目录
chdir("/");
5)在循环中放置自己的业务逻辑代码
while(1)
{
//业务逻辑代码
}
3.完整代码
//精灵进程的创建
void myDaemon_Init()
{
//1.消除文件默认权限掩码的影响
umask(0);
//2.创建进程,让父进程退出,保证守护进程不是进程组长
if(fork() != 0)
{
exit(0);
}
//3.调用setsid创建一个会话,让子进程成为守护进程;
// setsid会导致:
// 1).调用进程成为新会话的首进程
// 2).调用进程成为一个进程组的组长进程
// 3).调用进程没有控制终端
setsid();
//4.将当前工作目录更改为根目录
chdir("/");
//5.在循环中放置自己的业务逻辑代码
while(1)
{
//业务逻辑处理代码
}
}