用c语言打印到stderr

用c语言打印到stderr,c,standard-error,C,Standard Error,我正在进行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 successful

我正在进行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
的意思和作用是什么?最后,如果它正在将输出写入一个文件,我在哪里可以看到它?

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

find . -type f -name '*.c' -print0 | xargs -0 egrep '[a-zA-Z].*somefunction('
我不想收到关于无法打开目录的错误消息,因为磁盘无法进入管道并被
xargs
处理。我希望他们出现在屏幕上

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

如果程序在启动时从
rc.local
或其他后台作业启动,则有可能最终将
stderr
连接到
/dev/null
。启动脚本的脚本有问题,需要更正该脚本。

请参阅