创建C++守护进程并保护环境



我正在尝试创建一个在Red Hat 6.3平台上运行的c ++守护进程,并且无法理解libc daemon()调用,daemon shell命令,startprocstart-stop-daemon以及Google建议用于创建守护程序的大约六种其他方法之间的差异。

我看到有人建议需要两个forks,但打电话给daemon只能做一个。 为什么需要第二个分叉?

如果我编写 init.d 脚本来调用 bash daemon,c 代码还需要调用 daemon 吗?

我实现了我的应用程序来调用 c daemon() 函数,因为它似乎是最简单的解决方案,但我遇到了我的环境变量似乎被丢弃的问题。 我该如何防止这种情况?

我还需要以特定用户身份运行守护程序,而不是以 root 身份运行。

创建保留其环境变量、以特定用户身份运行并在系统引导时启动的 C++ 守护程序的最简单方法是什么?

为什么需要第二个分叉?

回答在创建守护程序时执行双分叉的原因是什么?

bash 守护程序 shell 命令

我的 bash 4.2 没有一个名为守护程序的内置命令。你确定你的是来自 bash 吗?什么版本,什么发行版?

环境变量似乎被丢弃了。

我在文档中看不到任何这方面的迹象。你确定是由于daemon吗?您是否检查过它们在通话之前是否存在,并在通话后失踪?

以特定用户身份运行守护程序

阅读有关setresuid和相关功能的信息。

创建保留其环境变量、以特定用户身份运行并在系统引导时启动的 C++ 守护程序的最简单方法是什么?

取决于。如果你想保持你的代码简单,忘记所有这些,让 init 脚本通过例如 start-stop-daemon .如果你想在你的应用中处理这个问题,daemonretresuid相结合应该是一个不错的方法,尽管不是唯一的方法。

最新更新