gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 01:16:05 25 4
gpt4 key购买 nike

我有一个关于 C 中的守护进程的一般性问题,我现在还没有看到答案。

有没有一种方法应该如何实现对守护进程的控制,比如约定或标准?

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

我看过很多文档,教授如何在 C 语言中创建守护进程的基础知识。 fork 、关闭文件描述符、更改根等...没问题。当进程进入无限循环时(可以这么说,创建守护进程时),它们都停止了。但这只是守护进程编码的一半。你必须以某种方式控制它。我可以让它以不同的方式工作,但我觉得它还有更多的东西。

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

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

我的主要问题归结为:是否有一种方法可以完成?

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

最佳答案

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

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

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

关于c - C 中的守护进程 - 有没有一种方法可以实现它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15025029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com