Linux 守护进程创建

1. 守护进程:

是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性的执行某种
任务或等待处理某些发生的事件。守护进程常常在系统启动时开始运行,在系统关闭时终止

2. 创建守护进程的步骤:

  1)创建子进程,父进程退出  fork();

  2)在子进程中创建新会话   setsid();

  3)改变当前目录为根目录  chdir("/");

  4)重设文件权限掩码   umask(0);

  5)关闭文件描述符  close(fd);

补充:
getdtablesize();  //进程所能打开的最大文件数
daemon.log: 包含各种系统后台守护进程日志信息。
tmp文件是linux运行时产生的缓存文件,用于加速二次打开文件的速度,
tmp文件在 linux关机时会被系统预设指令删除的。

例子: 通过创建守护进程,一直向  "/tmp/daemon.log"  文件中写入数据

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h> int main(int argc, const char *argv[])
{
pid_t pid;
pid = fork();
if(pid < )
{
perror("fork fail: ");
exit();
}
else if(pid == ) //子进程
{
setsid();//在子进程中创建新会话
chdir("/");//改变目录为根目录
umask();// 重设文件权限掩码
int fd = getdtablesize();//获取最大文件描述符
int i;
for(i=; i<fd ;i++) //关闭文件,文件描述符是按照顺序,循序打开的,所以获取最大的文件描述符,即为打开多少个文件
{
close(i); //关闭所有打开的文件,包括标准输入,输出,错误
}
fd = open("/tmp/daemon.log",
O_WRONLY|O_CREAT|O_APPEND,); //打开日志文件,循环向日志文件写入内容
while()
{
write(fd, "hello\n",);
sleep();
}
}
else //创建子进程后父进程退出
{
exit();
}
return ;
}

测试:

Linux 守护进程创建

上一篇:Linux 守护进程创建原理及简易方法


下一篇:Linux 驱动——Button驱动6(mutex、NBLOCK、O_NONBLOCK)互斥信号量、阻塞、非阻塞