如何在Linux(GCC)中打印输出(不是标准输出)?

问题描述:

在Windows上有OutputDebugString函数,我怎么在Linux上做同样的事情?如何在Linux(GCC)中打印输出(不是标准输出)?

更新:stderr和stdlog不是我想要的。这些被重定向到标准输出。 P. S.和syslog也没有区别。

+0

您正在使用哪个窗口管理器?这是一个控制台还是winodwed应用程序? – johnathon

+0

@johnathon:这是一个控制台应用程序,我不想依赖某个WM。 –

+1

你在用什么IDE? –

在Linux上的qDebug被重定向到标准输出。在Windows上,无法获得两个不同的输出流,例如OutputDebugString。 Linux上似乎没有专用的调试输出流。

我不确定OutputDebugString确实是什么,但标准C++定义了标准错误流std::cerr和标准日志流std::clog。两者都在标题<iostream>中声明。

这些默认绑定到Linux中的同一文件描述符;不同的是cerr是无缓冲的,而clog是缓冲的(我相信它是行缓冲的)。

Linux中没有“系统调试器”的概念。如果你想写入系统日志,你可以使用syslog(3)

+0

谢谢。顺便说一下,3是什么意思是'syslog(3)'?我经常看到这样的表示法,但无法理解其含义。 –

+2

@VioletGiraffe:这意味着'syslog'在Linux手册的第3部分。 'man 3 syslog'会为其提供manpage。 –

+0

这些全部显示在控制台中,而不是IDE中的“输出”窗口。还有什么想法? –

在Linux或Posix系统中,可能没有这种函数的确切等价物。

您可以输出到stderr(如果在C或C++中)或在C++中输出到std::cerrstd::clog

请注意,对于大多数shell,你可以开始一些程序和redirect不同的和独立的stdout &他们的stderr。

对于系统日志记录,您可以使用openlog & syslog函数。

如果要输出到控制终端(如果存在),可以使用/dev/tty设备。