gpt4 book ai didi

c++ - 通用守护进程/服务器设计 - 最佳实践(C/C++、Linux)

转载 作者:IT王子 更新时间:2023-10-29 00:36:40 25 4
gpt4 key购买 nike

这些问题非常笼统,因为它们在不同情况下不断出现。我希望有一些基本原则/标准做法。

典型要求:

  1. 一个充当“服务器”的程序,在 linux 中运行背景(并且几乎不间断地运行。可能每天或每周重新启动)
  2. 通过一些套接字协议(protocol)处理客户端连接
  3. 有启动配置文件
  4. 输出到一个或多个日志文件

我的问题:

  1. 我应该把程序写成“守护进程”吗?在选择守护进程与非守护进程路由时,我应该考虑哪些事项?
  2. 日志文件和配置文件应该放在 linux 文件夹层次结构中的什么位置?我应该从某些用户的主目录或某些用户主目录中的子文件夹中运行它吗?或者我应该创建一个新文件夹,即/my_server_abc/,然后从那里运行它,并将日志文件也写入该目录?

谢谢

最佳答案

  1. Should I write the program as a "daemon"?

没有。

不要试图 self 守护。使用操作系统提供的工具让您的应用程序从启动脚本在后台运行,例如 Debian/Ubuntu 中的 start-stop-daemon。 Systemd 和 upstart 也可以在它们的启动脚本中为您处理这个问题,就像现在大多数初始化系统一样。

编写守护进程有一些您可能意想不到的陷阱,而且大多数现代初始化脚本都不希望您将自己的进程发送到后台——这无论如何都会使它们的工作复杂化。例如,这允许生成可靠的 .pid 文件来跟踪应用程序的进程 ID。如果你自己守护进程,你的 init 系统必须依赖你的应用程序以某种方式正确传达你的进程 ID,因为你生成了新的 PID,init 系统无法跟踪。这使他们和您的事情都变得复杂。

关于c++ - 通用守护进程/服务器设计 - 最佳实践(C/C++、Linux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7129054/

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