gpt4 book ai didi

c++ - 如何暂时抑制 printf 的输出?

转载 作者:太空狗 更新时间:2023-10-29 22:56:50 25 4
gpt4 key购买 nike

在控制台应用程序中,我正在调用一个库函数,它输出一些我不感兴趣的消息(可能使用 printf):

void libFoo()
{
// does some stuff
printf("boring message");
// does some more stuff
}

我之前尝试抑制 cout,但没有用,因此我认为 libFoo 使用 printf 的原因:

cout << "interesting messsage" << endl;
streambuf* orig_buf = cout.rdbuf();
cout.rdbuf(NULL);
libFoo();
cout.rdbuf(orig_buf);
cout << "another interesting messsage" << endl;

此代码输出所有这些消息。有没有办法暂时抑制 printf 的输出?我正在使用 Linux Mint。

最佳答案

这里是:

int supress_stdout() {
fflush(stdout);

int ret = dup(1);
int nullfd = open("/dev/null", O_WRONLY);
// check nullfd for error omitted
dup2(nullfd, 1);
close(nullfd);

return ret;
}

void resume_stdout(int fd) {
fflush(stdout);
dup2(fd, 1);
close(fd);
}

如果这是 C++,还需要刷新 cout 以备不时之需。

编辑澄清

您传递给 resume_stdoutfd 与您收到的作为 supress_stdout 的返回值的相同。

关于c++ - 如何暂时抑制 printf 的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46728680/

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