【发布时间】:2016-01-07 01:37:38
【问题描述】:
我需要在我的应用程序中添加一个命令行选项,说明它将作为 deamon 运行。
但是,我也在使用 boost logging 库来保存这个应用程序的日志,我发现 boost logging 不支持分叉。
这似乎阻止了我分叉,因此我无法创建 守护进程。
- 是否可以绕过这个问题,或者;
- 我可以在不分叉的情况下创建守护进程吗?
【问题讨论】:
-
为什么不提升日志记录不支持
fork?没有办法解决这个问题吗?毕竟除了init之外的所有进程都是fork的结果。 -
@skyking boost.org/doc/libs/1_57_0/libs/log/doc/html/log/rationale/… 虽然我猜如果你在分叉后初始化日志记录,你仍然可以守护进程。
-
当只允许子进程继续生存和记录时,分叉仍然是一个问题吗?一些描述的问题与同时记录的多个进程有关——在守护进程的双叉场景中,这不会发生。如果这仍然是一个问题,是否有办法将 boost 日志的初始化推迟到第二次分叉之后?
-
@skyking 如果您已经开始从父进程登录,这将是一个问题,但是如果您开始登录子进程(从不在父进程中),您是安全的。有关信息,请参阅我的答案。
-
@FilipRoséen-refp 这就是为什么我问是否可以将 boost 日志的初始化推迟到第二次分叉之后。
标签: c++ linux boost fork daemon