我明白,一个守护进程不应该写stdout
(和stderr
),因为这不会是一次可从控制终端分离。但是,我可以重新打开stdout
到一个普通的文件,这样我所有的原始日志仍然可以工作吗?这对我来说是非常好的和有用的。重新打开标准输出到Linux守护进程的常规文件?
我想是这样的分叉后,
freopen("/dev/null/", "r", stdin);
freopen("log", "w", stdout);
freopen("log", "w", stderr);
BOOST_LOG_TRIVIAL(info) << "daemonized!";
守护程序可以启动(准确地说,它并没有失败,退出),并可以创建日志文件。但是日志是空的(没有“守护进程!”)。这是不是正确的方法来守护?有人可以点亮一些光线吗?
我认为你有理由回到前面 - 如果你的'stdout'和/或'stderr'去一个终端,那么它仍然是你的控制终端,你不能脱离它。我错了吗? –