在c中打印到stderr [重复]

Posted

技术标签:

【中文标题】在c中打印到stderr [重复]【英文标题】:Printing to stderr in c [duplicate] 【发布时间】:2020-01-24 02:39:01 【问题描述】:

我正在做一个 sqlite 插入,我遇到了以下代码:

sqlite3 *db;
char* error_msg = 0;
int rc = sqlite3_open("New.db", &db);
if (rc) 
    fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
    return(0);
 else 
    fprintf(stderr, "Opened database successfully\n");

fprintf 到底在做什么? stderr 是什么意思和作用?最后,如果它正在将输出写入文件,我在哪里可以看到?

【问题讨论】:

见en.wikipedia.org/wiki/Standard_streams#Standard_error_(stderr) 【参考方案1】:

在处理调用管道中其他程序的程序时,我们发现将正常输出与错误输出分开很方便。当我跑步时

find . -type f -name '*.c' -print0 | xargs -0 egrep '[a-zA-Z].*somefunction('

我不希望出现有关无法打开目录的错误消息,因为磁盘无法进入管道并由xargs 处理。我希望它们出现在屏幕上。

所以程序有两个输出通道,一个用于正常输出,一个用于错误输出。 stderr 是从 C 程序访问错误输出的方式。

对于从rc.local 启动的程序或启动时的其他后台作业,可能会以stderr 连接到/dev/null 而结束。这是启动它的脚本有问题,需要更正脚本。

【讨论】:

以上是关于在c中打印到stderr [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中打印到 stderr?

在 Django 数据迁移中可以打印到 stdout 或 stderr 吗?如果是这样,怎么做?

将Java 8 GC日志重定向到stderr

有没有办法在谷歌部署管理器中打印到stdout,stderr或日志文件?

C遇到的问题

你如何在 R 中打印到标准错误?