2011-12-04 116 views
3

在Windows上有OutputDebugString函數,我怎麼在Linux上做同樣的事情?如何在Linux(GCC)中打印輸出(不是標準輸出)?

更新:stderr和stdlog不是我想要的。這些被重定向到標準輸出。 P. S.和syslog也沒有區別。

+0

您正在使用哪個窗口管理器?這是一個控制檯還是winodwed應用程序? – johnathon

+0

@johnathon:這是一個控制檯應用程序,我不想依賴某個WM。 –

+1

你在用什麼IDE? –

回答

2

在Linux上的qDebug被重定向到標準輸出。在Windows上,無法獲得兩個不同的輸出流,例如OutputDebugString。 Linux上似乎沒有專用的調試輸出流。

10

我不確定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中的「輸出」窗口。還有什麼想法? –

5

在Linux或Posix系統中,可能沒有這種函數的確切等價物。

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

請注意,對於大多數shell,你可以開始一些程序和redirect不同的和獨立的stdout &他們的stderr。

對於系統日誌記錄,您可以使用openlog & syslog函數。

如果要輸出到控制終端(如果存在),可以使用/dev/tty設備。

相關問題