我知道守护程序不应写入stdout
(and stderr
),因为一旦与控制终端分离,它将不可用。但是我可以重新打开stdout
一个常规文件,以便我所有的原始日志记录仍然有效吗?这对我来说非常好和有用。
我在分叉后尝试了这样的事情,
freopen("/dev/null/", "r", stdin);
freopen("log", "w", stdout);
freopen("log", "w", stderr);
BOOST_LOG_TRIVIAL(info) << "daemonized!";
可以启动守护程序(准确地说,它不会失败并退出)并且可以创建日志文件。但是日志是空的(没有“守护进程!”)。这不是守护进程的正确方法吗?有人可以解释一下吗?