C++采用Daemon进行后台程序的部署

2023-10-27


一、如何采用Daemon进行后台程序的部署

在C++中,如果要让一个程序一直在后台运行并且和终端会话分离,我们可以将其作为守护进程运行,以下是创建C++守护进程的一般步骤。

1. 创建子进程

通过调用fork()函数创建一个子进程。这将产生一个新的进程,该进程是原始进程的副本。父进程和子进程从fork()函数的返回值处开始执行。对于子进程,fork()返回0,对于父进程,fork()返回子进程的进程id

2. 终止父进程

在父进程中,使用exit()函数使得其正常退出。这样做是为了让子进程成为孤儿进程进而被init进程(进程ID为1)接管,并且脱离原来的会话。

3. 创建新的会话

在子进程中,调用setsid()函数创建一个新的会话,这将使得子进程成为新会话的领导进程,并且摆脱原来的控制终端。

4. 改变当前工作目录

使用chdir()函数来创建一个新的会话,这将使得子进程成为新会话的领导进程,同时摆脱原来的控制终端。

5. 重设文件权限掩码

通过调用unmask()函数设置一个合适的文件权限,确保守护进程创建的文件具有合适的权限。

6.关闭不需要的文件描述

守护进程通常不需要和用户交互,因此你可以关闭不需要的文件描述符,如标准输入,标准输入和错误文件描述符<

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++采用Daemon进行后台程序的部署 的相关文章

  • 具有相同参数类型但具有不同常量限定符的 std::vector 的转换

    问题很简单 静态转换 或其他一些转换 通常是安全的 std vector lt Foo gt to std vector lt const Foo gt 就二进制而言 我不明白为什么本机类型会有所不同 毕竟const是一种语言约束 不应影响
  • X11 模式对话框

    如何使用 Xlib 在 X11 中创建模式对话框 模态对话框是一个位于应用程序其他窗口之上的窗口 就像瞬态窗口一样 并且拒绝将焦点给予应用程序的其他窗口 在 Windows 中 当试图从模态窗口夺取焦点时 模态也会通过闪 烁模态窗口的标题栏
  • .crt 部分?这个警告是什么意思?

    我最近收到此警告 VC 2010 warning LNK4210 CRT section exists there may be unhandled static initializers or terminators 我假设这是关键部分
  • 将字符串作为 PChar 从 CSharp 传递到 Delphi DLL

    我正在尝试将字符串从 C 传递到 Delphi 构建的 DLL Delphi DLL 需要 PChar 这是Delphi导出 procedure DLL Message Location PChar AIntValue integer st
  • 为什么子函数不销毁GtkWindow?

    这是我的代码 void window first void enter window2 GtkWidget w gpointer data void quit GtkWidget w gpointer data void quit int
  • 在没有 epsilon 的情况下可以将浮点数与 0.0 进行比较吗?

    我知道 要比较两个浮点值 需要使用一些 epsilon 精度 因为它们并不精确 但是 我想知道是否存在边缘情况 我不需要那个 epsilon 特别是 我想知道这样做是否总是安全的 double foo double x if x lt 0
  • 如何从 Qt 应用程序通过 ODBC 连接到 MySQL 数据库?

    我有一个新安装的 MySQL 服务器 它监听 localhost 3306 从 Qt 应用程序连接到它的正确方法是什么 原来我需要将MySQL添加到ODBC数据源 我在遵循这个视频教程后做到了这一点 https youtu be K3GZi
  • C# 无法捕获 SerializationException

    我的程序在加载序列化文件的部分遇到问题 如果文件无法反序列化 我希望很好地失败 但由于某种原因 我的程序将中断而不是进入 catch 子句 这是我的代码 using FileStream fs new FileStream openFile
  • ASP.NET - 在 RenderContent 调用中将事件处理程序添加到 Repeater 内的 LinkBut​​ton

    我有一个加载自定义用户控件的 Sharepoint WebPart 用户控件包含一个 Repeater 而 Repeater 又包含多个 LinkBut ton 在 Web 部件的 RenderContent 调用中 我有一些用于添加事件处
  • 控制台应用程序中使用 Unicode 字符的 _tprintf

    我正在从 Unicode 构建的控制台应用程序 使用 C 和 Visual Studio 2008 执行这个简单的输出 此代码旨在在 Windows 上运行 tprintf L Some sample string n 一切正常 但是如果我
  • 处理“未找到细胞”。 Excel 中的错误

    我正在使用 Excel VSTO 应用程序并使用以下代码在工作表中查找错误单元格 Excel Range rngTemp Excel Range rngErrorRange Excel Worksheet Sheet1 Excel Work
  • 如何构建一棵与或树?

    我需要一个支持 与 和 或 的树结构 例如 给定一个正则表达式 如ab c d e 我想把它变成一棵树 所以 一开始我们有两个 或 分支 它可以向下ab or c d e 如果你低头ab分支 你得到两个节点 a and b or a其次是b
  • 使用数据绑定,如何将包含表情符号的文本绑定到标签并使其正确显示?

    我正在编写一个应用程序来连接 WordPress BuddyPress API 该应用程序将允许用户通过 API 相互发送消息 当这些消息包含表情符号时 我很难正确显示它们 以下是 API 返回的消息文本的简短示例 Hi x1f642 ho
  • C++ 中是否有与 PHP 的explode() 函数等效的函数? [复制]

    这个问题在这里已经有答案了 可能的重复 在 C 中分割字符串 https stackoverflow com questions 236129 splitting a string in c 在 PHP 中 explode 函数将获取一个字
  • 如何将System.Windows dll添加到Visual Studio 2010 Express?

    我正在开发一个小型应用程序C and VS2010 as IDE with NET框架4 我想用CaptureSource类以便从笔记本电脑的网络摄像头捕获视频 为此我需要添加一个命名空间System Windows DependencyO
  • “1个未解决的外部”C++

    我已经检查了所有文件之间的连接以及类和函数定义 但每次我尝试运行我的程序时 它都会阻止我并告诉我它有 1 个未解析的外部 该程序应该打开多个文件 一个 学生 文件和一个 成绩 文件 从中读取数据 然后使用 查询文件 来查找数据 找到查询中要
  • 使用多态对象数组进行 JSON 反序列化

    我在涉及多态对象数组的 JSON 反序列化方面遇到问题 我已经尝试过记录的序列化解决方案here https stackoverflow com questions 5186973 json serialization of array w
  • 卸载程序

    我正在尝试使用此代码卸载程序 但它似乎不起作用 我尝试过其他答案 但似乎也不起作用 有人可以帮助我吗 我正在尝试按给定名称 displayName 卸载该程序 例如 我给出 displayName Appname 那么此代码应该从我的计算机
  • 从脚本启用/禁用 GameObject 组件 [Unity3D]

    我需要获取一个脚本中设置的布尔值 放入名为 bouclier 的变量 以启用或禁用游戏对象 该变量位于游戏对象 Player 中 此处右下角 我需要启用或禁用这个游戏对象 Bouclier01 为此 我将脚本附加到游戏对象 Bouclier
  • 在windows + opengl中选择图形设备

    我知道如何使用 openGL 打开窗口 使用 Win32 或其他工具包 但是当系统有2块显卡时 如何选择要渲染的图形设备 我的编程语言是 C 我专注于 Windows 但任何示例都将受到欢迎 编辑 也许更好地解释我的问题是个好主意 以便添加

随机推荐

  • 科技项目验收测试规范有哪些?

    随着科技的不断发展和进步 越来越多的科技项目被投入使用 为了保证这些科技项目的质量 需要进行验收测试 科技项目验收测试是一项非常重要的工作 其结果对项目的质量和功能正常使用有着直接的影响 本文将就科技项 目验收测试规范和第三方软件检测机构的
  • Java简历技能怎么描述

    描述 Java 技能在简历上是非常重要的 因为它可以帮助您展示出您的技能和经验 下面是一些描述 Java 技能的提示 明确指出您的 Java 版本和开发环境经验 例如 Java SE 8 和 Eclipse 描述您掌握的 Java 技术 例
  • 【python智能办公】处理excel 复制sheet模板带样式 并插入修改数据

    from pandas import DataFrame df1 DataFrame a 1 3 5 7 4 5 6 4 7 8 9 b 3 5 6 2 4 6 7 8 7 8 9 df2 DataFrame a 1 3 b 3 5 df1
  • 喜讯!云联壹云入选2023年北京市“专精特新”中小企业

    6月25日 北京市经济和信息化局发布 关于对2023年第一季度北京市专精特新中小企业名单进行公告的通知 北京云联壹云技术有限公司入选2023年北京市 专精特新 中小企业 专精特新 是国家为增强企业自主创新能力和核心竞争力 不断提高中小企业发
  • 深度学习环境配置3——windows下的tensorflow-gpu=2.2.0环境配置

    深度学习环境配置3 windows下的tensorflow gpu 2 2 0环境配置 注意事项 一 2021 9 11更新 二 2021 7 8更新 学习前言 环境内容 各个版本tensorflow2的配置教程 环境配置 一 Anacon
  • 基于Dockerfile+nginx集成一个静态网页的镜像

    这篇博客帮助大家利用Dockerfile做一个基于nginx的docker镜像 也就是将一个静态网站封装成image 可以将它丢到镜像仓库中 用的时候可以随时拉取下来 很轻松的在本地运行起来 1 在网站资源同级目录下面创建一个Dockerf
  • centos7编译源码安装nginx

    1 安装依赖 yum y install gcc zlib zlib devel pcre devel openssl openssl devel 下面说说这些依赖 gcc 因为nginx是由c编写的 GCC GNU Compiler Co
  • MDST研究(Python代码实现)

    个人主页 研学社的博客 欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 本文讲解MDST及
  • 程序翻译的过程,linux环境下处理,生成 .i、.s、.o 文件(预处理、编译、汇编、链接)

    1 程序翻译的过程有四个步骤 预处理 gt 编译 gt 汇编 gt 链接 那么每个步骤是干什么 预处理阶段 处理 gt 头文件 宏替换 条件编译等等 我用 linux 环境查看一下 如下 首先写一个简单的 c 文件 里面包含宏替换 头文件
  • CUDA 内存不足如何解决?

    很多小伙伴在跑pytorch的项目的时候可能会出现CUDA内存不足的情况 或者在使用GPU的时候明明显存充足却一直显示显存不足的情况 这个时候我们要怎么解决呢 接下来就来看看小编是怎么解决的吧 小编复现大佬project发现GPU跑不动 出
  • 10大主流压力/负载/性能测试工具推荐

    在移动应用和Web服务正式发布之前 除了进行必要的功能测试和安全测试 为了保证互联网产品的服务交付质量 往往还需要做压力 负载 性能测试 然而很多传统企业在试水互联网 的过程中 往往由于资源或产品迭代速度等原因忽视了这一块工作 导致新产品上
  • GCP Compute Logging and Montioring, Lab

    最后更新2022 03 18 这个lab是实现logging的 起始依然是创建engine 一个是vm 另一个是gke cluster 创建gke cluster时需要设置enable logging 没看到 有时间时再再创建一遍 找一下位
  • 开平方算法的C++实现

    开方算法的设计与实现 问题 求解非线性方程 x 2 c
  • 如何防止http请求数据被篡改

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 故事的开始 面试官问了我一个问题 如何防止http请求中数据被篡改 回答 1 设置客户端IP黑 白名单 1 1 客户端所有请求 请求到代理服务器 nginx 代理服务器维护
  • 永恒之蓝 ms17_010漏洞

    复现环境 攻击机 Linux kali 192 168 119 128 靶机 Windows 7 x64 192 168 119 129 实验条件 两台机子可以相互ping通 并且靶机 无补丁 开启了445端口 防火墙是关闭的 关闭防火墙
  • TOP10. 合成复用原则——面向对象设计原则

    合成复用原则是面向对象设计原则的 7 条原则中剩下的最后一条 下面我们将对其进行详细地介绍 合成复用原则的定义 合成复用原则 Composite Reuse Principle CRP 又叫组合 聚合复用原则 Composition Agg
  • java延迟周期循环定时器样例

    package util import java text NumberFormat import java text ParseException import java text SimpleDateFormat import java
  • SmartFusion从FPGA到ARM(二)——MSS_GPIO外部中断和输入

    文章目录 前言 预期效果 0 MSS GPIO相关的函数 1 MSS GPIO模式配置 2 GPIO检测和控制实现 3 FPGA工程编译和运行 系列教程 SmartFusion从FPGA到ARM系列教程 前言 关于片上MCU基本外设的使用
  • oracle insert into values 多条_干货

    数据库技术 前言 一 数据库发展史 1 1 程序管理阶段 1 2 文件系统阶段 1 3 数据库系统阶段 二 数据库专业术语 2 1 关系 2 2 元组 2 3 属性 三 数据库及连接工具介绍 3 1 Oracle数据库介绍 3 2 连接工具
  • C++采用Daemon进行后台程序的部署

    文章目录 一 如何采用Daemon进行后台程序的部署 1 创建子进程 2 终止父进程 3 创建新的会话 4 改变当前工作目录 5 重设文件权限掩码 6 关闭不需要的文件描述 二 代码示例 一 如何采用Daemon进行后台程序的部署 在C 中