在控制台应用程序中,我调用的是一个库函数,它输出一些我不感兴趣的消息(可能使用printf):
cout << "interesting messsage" << endl;
streambuf* orig_buf = cout.rdbuf();
cout.rdbuf(NULL);
libFoo();
cout.rdbuf(orig_buf);
cout << "another interesting messsage" << endl;
我试图压制cout之前没有工作,因此我认为libFoo使用的是printf:
mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation)
此代码输出所有这些消息。有没有办法暂时抑制printf的输出?我正在使用Linux Mint。
答案 0 :(得分:1)
这是:
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
来进行测量。
已编辑为
您传递给fd
的{{1}}与您收到的resume_stdout
返回值相同。