在一个程序中,我希望将所有 printfs 写入 syslog。我将所有 printf 替换为 syslog,所以我想将 stdout 和 stderr 重定向到 syslog。为此,我尝试了以下代码
int main()
{
FILE *fl;
fl = popen("logger","w");
if(fl == NULL)
return 1;
fprintf(fl,"logger test new");//this goes to /var/log/messages
int nf;
nf = fileno(fl);
dup2(nf,STDOUT_FILENO);
dup2(nf,STDERR_FILENO);
fprintf(stdout,"Wriiten in stdout\n");
fprintf(stderr,"Wriiten in stderr\n");
pclose(fl);
}
问题是 stderr 进入 syslog 并且屏幕上没有打印任何内容并且程序被挂起。请建议。