如何防止库打印到stdout(在Linux / C中)?

时间:2014-04-08 15:39:56

标签: c linux printf stdout

我正在使用一个库,它将所有类型的糟糕消息打印到stdout。我试图在我的程序上保持一个干净的输出,但这使它变得不可能。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你可以关闭()stdout套接字,然后打开一个新的套接字到/ dev / null(假设除了windows之外几乎没有任何东西)。

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

int main() {
    int newfd;

    printf("good things come...\n");

    close(1);
    newfd = open("/dev/null", O_WRONLY);
    if (newfd != 1) {
        fprintf(stderr, "uh oh...  we didn't duplicate the socket properly\n");
        exit(1);
    }

    printf("...to those that wait()\n");
}

然后运行这个你得到:

$ ./test
good things come...

注意printf没有最后一行。

[但我同意这些评论:使用显示不良事物迹象的图书馆可能是出于其他原因而不是你发现的第一个原因的错误选择]