【发布时间】:2012-08-28 00:12:30
【问题描述】:
有一个用 C 语言开发的在 unix 环境下运行的服务器代码,服务器将 STDOUT/STDERR 重定向到日志如下
static gboolean
create_log_file (const char *log_file)
{
int log_file_fd;
g_return_val_if_fail (log_file != NULL, FALSE);
log_file_fd = open (log_file, O_WRONLY|O_CREAT|O_TRUNC, 0644);
if (log_file_fd < 0)
{
return FALSE;
}
dup2 (log_file_fd, 1);
dup2 (log_file_fd, 2);
close (log_file_fd);
return TRUE;
}
计划为此日志文件设置归档/清除 cron,以确保磁盘使用量在限制范围内。
日志记录工作得非常好,直到清除 cron 启动并删除日志文件。
观察到 cron 运行后日志文件删除,STDERR 跟踪停止并且不再创建文件?
【问题讨论】:
-
服务器打印到 STDERR 的内容曾经完美地出现在日志文件中,直到我删除日志文件。发布到 STDERR 的打印结果都没有出现在日志文件中?请注意,当文件被删除时,服务器正在运行并继续运行。