【C++】Linux环境下创建守护进程

本文详细介绍了如何在Linux环境下使用C++创建守护进程,包括创建新进程、脱离会话组、创建孙进程、改变工作目录、修改文件掩码以及关闭所有文件描述符等步骤。通过这些操作,确保守护进程不受终端影响,能长期稳定运行。
摘要由CSDN通过智能技术生成


原本是计划把C++服务器的内容一起写出来,但是由于我写博速度还是太慢,所以这次先把我每次服务器开发都要遇到的第一步——守护进程的内容整理出来。以下内容结合了网上各种资料和我自己理解及写代码观察实验总结,如有不正确的地方,望指正,谢谢。

守护进程C++代码

#include <unistd.h>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h> 

using namespace std;

//将程序进程变为守护进程
void setDaemon(){
	//1. 创建子进程,每个进程都会返回一个数字,父进程返回子进程的pid,子进程返回0
	int ret_code = fork();
	if (ret_code < 0){
		exit(1);
	}else if (ret_code>0){
		//父进程退出
		exit(0);
	}

	//2. 令子进程与父进程的会话组和进程组脱离,令子进程不受终端关闭影响
	setsid();

	//3. 如果担心目前进程会打开终端并受终端影响,可再fork一次,新进程将不会是会话组长,因此无法打开新终端。
	// 这一步不是必须的。
	ret_code = fork();
	if (ret_code < 0){
		exit(1);
	}else if (ret_code>0){
		exit(0);
	}

	//4. 改变进程的工作目录
	chdir("/");

	//5. 设置进程的文件操作权限,使进程拥有最大权限
	umask(0);

	//6. 将父进程打开的文件描述符关闭
	//getdtablesize():获取描述符表的大小
	for
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值