我是靠谱客的博主 落后皮皮虾,最近开发中收集的这篇文章主要介绍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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部