文章目录
- 前言
- 一、以fork方式创建后台进程
- 二、调用系统的daemon API
前言
一、以fork方式创建后台进程
#include<iostream>
#include<unistd.h>
#include<stdlib.h>
#include<fcntl.h>
using namespace std;
//使用fork创建进程的若干步骤
//1.fork一个子进程并且退出父进程,子进程成为一个孤儿进程并由init进程接管
//2.调用setsid建立新的进程会话
//3.将当前工作目录切换到根目录
//4.将标准输入输出出错重定向到/dev/null
void daemonize()
{
pid_t pid;
if( (pid = fork()) < 0 )
{
cout<<"Can Not Create Suprocess!"<<endl;
}else{
//子进程的pid = 0,退出父进程
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[])
{
//第一个0 : 切换到根目录
//第二个0 : 输入输出重定向
//daemon(int nochdir,int noclose)
if(daemon(0,0) == -1){
cout<<"ERROR!"<<endl;
exit(-1);
}
while(1)
{
sleep(1);
}
return 0;
}
最后
以上就是落后皮皮虾最近收集整理的关于WebRTC服务器理论铺垫(二):后台服务前言一、以fork方式创建后台进程二、调用系统的daemon API的全部内容,更多相关WebRTC服务器理论铺垫(二):后台服务前言一、以fork方式创建后台进程二、调用系统的daemon内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复