C 中的守护进程 - 有没有一种方法可以实现它们?

2024-02-03

我有一个关于 C 中守护进程的一般性问题,但到目前为止我还没有看到答案。

有没有一种方法可以实现对守护进程的控制,例如约定或标准?

--休息是进一步的解释--

我看过多个文档,教授如何在 C 中创建守护进程的基础知识。分叉、关闭文件描述符、更改根目录等……没问题。当进程进入无限循环时(当创建守护进程时 - 可以这么说),它们都会停止。但这只是编写守护进程的一半。你必须控制它somehow。我可以让它以不同的方式运作,但我感觉还有更多的事情要做。

为此(检查是否有一个进程已经在运行或停止正在运行的守护进程,或者...)我已经看到了不同的方法(UNIX 套接字、文件锁、pid 文件,...)及其优缺点。但在我看来,这似乎是意见或个人喜好; “你为什么不只是……?”或“我就是这样做的,它对我有用”。我不确定这是否是自由的标志。

我的意思是,如果你看一下 sshd、httpd、syslogd 等......它们都可以通过 init 脚本或服务命令(start|stop|status)进行控制。这看起来像是一个标准。但这只是许多人试图遵循的一些松散约定,还是在 C 函数的深海中存在某种“框架”?你必须让它发挥作用吗somehow- 例如,让您的程序响应“停止”参数并结束守护进程somehow?或者是否存在某种标准、约定、UNIX 方式、最佳实践……人们应该遵循这些标准、约定来编写“良好、干净的代码”并且在大多数环境中都能很好地集成?

我的主要问题归结为:有没有办法做到这一点?

如果是这样,我在哪里可以找到更多信息?我想除了开始和停止之外还有更多需要注意的事情。


没有标准,但有一个de facto标准,正如您已经注意到的那样。

我建议您采用其中一个示例(例如 Apache),并研究一下 apachectl 的作用。您会发现它根据从文件中读取的 PID 信息向守护进程发送信号。

对于 Apache,信号是有意义的,因为您不希望某种 HTTP 请求能够停止服务器。对于 DBMS,您可能希望响应传入命令来停止服务器,前提是您首先进行身份验证和授权。

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

C 中的守护进程 - 有没有一种方法可以实现它们? 的相关文章

  • 为什么 int8_t 和用户通过 cin 输入显示奇怪的结果[重复]

    这个问题在这里已经有答案了 一小段代码让我发疯 但希望你能阻止我跳出窗外 看这里 include
  • 如何让 Swagger 插件在自托管服务堆栈中工作

    我已经用 github 上提供的示例重新提出了这个问题 并为任何想要自己运行代码的人提供了一个下拉框下载链接 Swagger 无法在自托管 ServiceStack 服务上工作 https stackoverflow com questio
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • ClickOnce 应用程序错误:部署和应用程序没有匹配的安全区域

    我在 IE 中使用 FireFox 和 Chrome 的 ClickOnce 应用程序时遇到问题 它工作正常 异常的详细信息是 PLATFORM VERSION INFO Windows 6 1 7600 0 Win32NT Common
  • 当我们想要返回对象的引用时,为什么我们在赋值运算符中返回 *this 而通常(而不是 this)?

    我正在学习 C 和指针 我以为我理解了指针 直到我看到这个 一方面 asterix 运算符是解引用的 这意味着它返回值所指向的地址中的值 而与号 运算符则相反 它返回值存储的地址记忆 现在阅读有关赋值重载的内 容 它说 我们返回 this因
  • 为什么 Google 测试会出现段错误?

    我是 Google Test 的新手 正在尝试提供的示例 我的问题是 当我引入失败并设置GTEST BREAK ON FAILURE 1 或使用命令行选项 GTest 将出现段错误 我正在考虑这个例子 https code google c
  • 回发后刷新时提示确认表单重新提交。我做错了什么?

    我有一个以空白 默认状态启动的仪表板 我让用户能够将保存的状态加载到仪表板中 当他们单击 应用 按钮时 我运行以下代码 function CloseAndSave var radUpload find radUpload1ID var in
  • 如何检测表单的任何控件的变化?

    如何检测 C 中表单的任何控件的更改 由于我在一个表单上有许多控件 并且如果表单中的任何控件值发生更改 我需要禁用按钮 我正在寻找一些内置函数 事件处理程序 属性 并且不想为此创建自定义函数 不 我不知道任何时候都会触发任何事件any控制表
  • Qt - ubuntu中的串口名称

    我在 Ubuntu 上查找串行端口名称时遇到问题 如您所知 为了在 Windows 上读取串口 我们可以使用以下代码 serial gt setPortName com3 但是当我在 Ubuntu 上编译这段代码时 我无法使用这段代码 se
  • C#:帮助理解 UML 类图中的 <>

    我目前正在做一个项目 我们必须从 UML 图编写代码 我了解 UML 类图的剖析 但我无法理解什么 lt
  • Azure 辅助角色“请求输入之一超出范围”的内部异常。

    我在辅助角色中调用 CloudTableClient CreateTableIfNotExist 方法 但收到一个异常 其中包含 请求输入之一超出范围 的内部异常 我做了一些研究 发现这是由于将表命名为非法表名引起的 但是 我尝试为我的表命
  • C# HashSet 只读解决方法

    这是示例代码 static class Store private static List
  • 如何禁用 fread() 中的缓冲?

    我正在使用 fread 和 fwrite 读取和写入套接字 我相信这些函数用于缓冲输入和输出 有什么方法可以在仍然使用这些功能的同时禁用缓冲吗 Edit 我正在构建一个远程桌面应用程序 远程客户端似乎 落后于服务器 我不知道可能是什么原因
  • 为什么 std::strstream 被弃用?

    我最近发现std strstream已被弃用 取而代之的是std stringstream 我已经有一段时间没有使用它了 但它做了我当时需要做的事情 所以很惊讶听到它的弃用 我的问题是为什么做出这个决定 有什么好处std stringstr
  • 等待进程释放文件

    我如何等待文件空闲以便ss Save 可以用新的覆盖它吗 如果我紧密地运行两次 左右 我会得到一个generic GDI error
  • AES 128 CBC 蒙特卡罗测试

    我正在 AES 128 CBC 上执行 MCT 如中所述http csrc nist gov groups STM cavp documents aes AESAVS pdf http csrc nist gov groups STM ca
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成
  • C++ 函数重载类似转换

    我收到一个错误 指出两个重载具有相似的转换 我尝试了太多的事情 但没有任何帮助 这是那段代码 CString GetInput int numberOfInput BOOL clearBuffer FALSE UINT timeout IN
  • 调用堆栈中的“外部代码”是什么意思?

    我在 Visual Studio 中调用一个方法 并尝试通过检查调用堆栈来调试它 其中一些行标记为 外部代码 这到底是什么意思 方法来自 dll已被处决 外部代码 意味着该dll没有可用的调试信息 你能做的就是在Call Stack窗口中单
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List

随机推荐

  • 递归 http-api 调用后向订阅者发送消息

    我想获取节点列表来创建所述节点对象的数组 以便显示层次结构 基础数据 结构如下所示 ROOT ID 1 NODE ID 2 NODE ID 4 NODE ID 11 NODE ID 3 NODE ID 5 NODE ID 6 NODE ID
  • Django - QuerySet 中的唯一列表

    我有一个过滤后的查询集 其中有一个多对多字段 客户端 我想创建查询集中所有 Client 对象的唯一字典 因此 Projects Queryset Project1 client
  • Xamarin.Forms ListView 通过代码设置 SelectedItem

    我怎样才能设置SelectedItem我的代码中的 ListView 我的问题是 当我在代码中预选择一个项目时 它没有突出显示 ListView 在 xaml 文件中定义
  • 如何手动触发路由解析器

    我在访问之前解析用户帐户片段 of my 用户页面 应用程序路由 component ts path users id component UserComponent resolve user UsersService children p
  • 在 AppleScript 中的“do shell script”对话框中添加进度条

    我正在开发一个用 AppleScript 编写的应用程序 它将 St Bernard 重定向 LaunchDaemon 移动到当前用户的目录 以便用户可以访问家里的任何网站 但让他们在返回学校之前将其放回去 原因是在学校 iPrism 会屏
  • 在 Visual Studio 代码中添加自定义库

    我正在制作一个扩展名为 h 的静态 cpp 库 并且我已在扩展名为 cpp 的不同文件中编写了相同的源代码 现在我想制作一个测试脚本 其中包含我刚刚创建的自定义库 当我使用这个库时 include
  • ng 未被识别为内部或外部命令

    运行 Windows 7 Professional 32 位 I tried running npm install g angular cli both under normal or admin I also tried adding
  • Spring oauth2 hasRole 访问被拒绝

    我对 OAuth2 非常陌生 并尝试在角色 auth server 中构建一台服务器来授权用户 并构建一台保留受保护资源的服务器 我在使用 ResourceServerConfigurerAdapter 时遇到了一些问题 看起来他忽略了从
  • Haskell Random 无法构造无限类型:a1 = IO a1

    我想用 Haskell 生成一个包含 26 个随机整数的列表 其总和为 301 我写下以下内容 import System Random f 1 sum sum f n sum m f n 1 sum m where m randomRIO
  • Bash 忽略特定命令的错误

    我正在使用以下选项 set o pipefail set e 在 bash 脚本中出现错误时停止执行 我有大约 100 行脚本正在执行 我不想检查脚本中每一行的返回代码 但对于一个特定的命令 我想忽略该错误 我怎样才能做到这一点 解决方案
  • 在 iPhone 邮件应用程序上绘制蓝色“未读点”

    有谁有如何绘制苹果邮件应用程序中使用的蓝色 未读点 的示例吗 这个具体来说 使用 Quartz2d 绘制椭圆很简单 但阴影 渐变的巧妙使用使这看起来真正的 3D 我认为邮件中的蓝点实际上是一个图像 我认为位图传送图像会比绘制渐变更快
  • 并行处理批次项目

    我有一个 ItemGroup 并且想要并行处理其所有项目 使用自定义任务或 exe 我可以编写我的任务 exe 来接受整个 ItemGroup 并在内部并行处理其项目 但是 我希望这种并行性能够与 MSBuild 结合使用 maxCpuCo
  • Selenium 缓慢向下滚动

    我正在尝试使用 Python 在 javascript 渲染的网页上进行动态网页抓取 1 但是 只有当我缓慢向下滚动页面时 才会加载元素 我努力了 driver execute script window scrollTo 0 Y 这不起作
  • 如何对 numberDisplay 的所有值求和,不包括类别

    我有一组数据 我想默认将过滤器应用到 numberDisplay 数据是这样的 data category A value 10 category B value 10 category C value 10 category S valu
  • 检查 linq 中的字符串是否为 null 或为空

    我有一个带有空格的字符串 string MyNote Convert ToString Session MyNote if MyNote null MyNote 如果字符串有更多空间 MyNote 不起作用 所以 如何在 C 中使用 lin
  • 从非模板参数化方法返回模板类型

    为了定义模板类 我考虑了三个不同的文件 该声明位于 h文件中 方法实现位于 cpp文件 并且显式实例化包含在 inc文件 通过在 cpp 末尾添加一行 例如 include bar impl inc 现在 这是我的问题 我有两个模板类 例如
  • ActiveMQ从java中删除队列

    如何从java程序中删除activemq中的队列 有类似 session delelteQueue 的东西吗 谢谢M 简单的解决方案 不使用 JMX 将连接转换为 ActiveMQConnection 并使用其 destroyDestina
  • 寻求报告服务认证建议

    我被分配负责修订当前的报告服务验证流程 目的是保持必要的安全级别 并简化授予对各个报告的访问权限的维护 配置 我无权访问域控制器来修改或创建新的 AD 组 我必须与当前存在的组 用户合作 在身份验证方面 我似乎可以选择使用以下任一方法 Wi
  • -Webkit滚动条+溢出+JQuery滚动顶部始终返回零

    我一整天都在研究这个错误 但无法解决它 有一个 JQuery scrollTop 动画脚本 它检测 window scrollTop 值并执行一些动画 如果单击按钮滚动回顶部 this click 函数 html body animate
  • C 中的守护进程 - 有没有一种方法可以实现它们?

    我有一个关于 C 中守护进程的一般性问题 但到目前为止我还没有看到答案 有没有一种方法可以实现对守护进程的控制 例如约定或标准 休息是进一步的解释 我看过多个文档 教授如何在 C 中创建守护进程的基础知识 分叉 关闭文件描述符 更改根目录等