如何redirectcout到控制台在Linux?

我正在写一个程序,这是另一个程序的一部分。 在主程序中,它们将cout的默认方向redirect到LOG文件。 为了debugging我自己的程序,我需要在linux中将cout的输出redirect到控制台(terminal)。 我不能保存控制台rdbuf所示的方法:

http://www.cplusplus.com/reference/iostream/ios/rdbuf/

有没有什么办法让我的目的在c + +的Linux控制台的处理?

您需要定义“控制台”的含义以及“重定向”的含义。 如果你在其他地方运行一个程序,并且你想把它重定向到控制终端(当他们说'console'时有多少人意思),你可以重定向到/ dev / tty,例如:

 program >/dev/tty 

当你运行程序。 上面可能是shell脚本中的一行,或者是一个作为参数传递给system(3)的字符串 – 这取决于你如何启动程序。

如果你想在程序中改变输出的位置,你可以打开一个新的streambuf指向你想要的,并使用ios :: rdbuf来重定向到它:

 filebuf *console = new filebuf(); console->open("/dev/tty"); if (!console->is_open()) { cerr << "Can't open console" << endl; } else { cout.ios::rdbuf(console); } 

我无法编译克里斯的例子。 我得到了“ – > open”没有在“console-> open”中声明。 我正在使用kdevelop 4.5.2编译它,工作是一段代码

 ofstream console("/dev/tty"); //create stream cout.rdbuf(console.rdbuf()); //redirects cout to the new stream 

根据定义, cout转到stdout ,即文件描述符1。