gpt4 book ai didi

c - 将标准输出和标准错误重定向到系统日志

转载 作者:可可西里 更新时间:2023-11-01 11:46:44 26 4
gpt4 key购买 nike

在一个程序中,我希望将所有 printfs 写入系统日志。我将所有 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 转到系统日志,屏幕上没有打印任何内容,程序挂起。请提出建议。

最佳答案

dup2(nf,STDOUT_FILENO);
dup2(nf,STDERR_FILENO);
fprintf(stdout,"Wriiten in stdout\n");
fprintf(stderr,"Wriiten in stderr\n");
fflush(stdout);

这应该可以解决。

fflush() 将强制从标准输出写入缓冲数据。

关于c - 将标准输出和标准错误重定向到系统日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14505079/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com