我是靠谱客的博主 落后皮皮虾,最近开发中收集的这篇文章主要介绍WebRTC服务器理论铺垫(二):后台服务前言一、以fork方式创建后台进程二、调用系统的daemon API,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
文章目录
- 前言
- 一、以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 API所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复