前言
一、以fork方式创建后台进程
#include<iostream>
#include<unistd.h>
#include<stdlib.h>
#include<fcntl.h>
using namespace std;
void daemonize()
{
pid_t pid;
if( (pid = fork()) < 0 )
{
cout<<"Can Not Create Suprocess!"<<endl;
}else{
if(pid != 0)
{
exit(0);
}
}
setsid();
if(chdir("/") < 0){
cout<<"Can Not Change Dir!"<<endl;
exit(-1);
}
int fd = open("/dev/null",O_RDWR);
dup2(fd,STDIN_FILENO);
dup2(fd,STDOUT_FILENO);
dup2(fd,STDERR_FILENO);
return;
}
int main(int argc,char* argv[])
{
daemonize();
while(1)
{
sleep(1);
}
return 0;
}
二、调用系统的daemon API
#include<iostream>
#include<unistd.h>
#include<stdlib.h>
using namespace std;
int main(int argc,char* argv[])
{
if(daemon(0,0) == -1){
cout<<"ERROR!"<<endl;
exit(-1);
}
while(1)
{
sleep(1);
}
return 0;
}