一、常用的守护进程函数
void daemonize ()
{
//deamonize
pid_t pid = fork();
if( pid > 0 )
{
//parent exit
exit(0);
}
//child continue
setsid();
chdir("/");
close(0);
open("/dev/null", O_RDWR);
//no env debug
if(!getenv("debug"))
{
close(1);
close(2);
dup(0);
dup(0);
}
}
这段代码的目的是让一个程序在后台以守护进程(daemon)的形式运行。让我们逐步了解每一行代码的作用:
pid_t pid = fork();
这行代码创建了一个新的进程,这是通过`fork()`系统调用实现的。`fork()`会创建一个和当前进程几乎完全相同的子进程。`fork()`调用会在父进程中返回新创建的子进程的进程ID,在子进程中则返回0。如果返回值大于0,那么代码运行于父进程;如果是0,则表示在子进程中。