2011-12-04 26 views
3

Windows上にはOutputDebugStringの機能がありますが、Linuxでこれをどうやって行うのですか?Linux(GCC)で出力する(標準出力ではない)方法は?

アップデート:stderrとstdlogは私が望むものではありません。それらはstdoutにリダイレクトされます。 P.S. syslogも同じです。

+0

どのウィンドウマネージャを使用していますか?そして、これはコンソールかwinodwedアプリケーションですか? – johnathon

+0

@johnathon:これはコンソールアプリケーションです。特定のWMに頼るのは嫌です。 –

+1

どのIDEを使用していますか? –

答えて

2

qDebug(Linuxの場合)はstdoutにリダイレクトされます。 WindowsではOutputDebugStringのように2つの異なる出力ストリームを取得する方法はありません。 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'はマンページを表示します。 –

+0

これらはすべて、IDEの「出力」ウィンドウの代わりにコンソールに表示されます。その他のアイデアは? –

5

おそらく、LinuxやPosixシステムでは、このような機能と全く同じ機能はありません。

stderr(CまたはC++の場合)、またはC++のstd::cerrまたはstd::clogに出力できます。

ほとんどのシェルでは、いくつかのプログラムとredirectを別々に独立してstdout & stderrから起動できます。

システムロギングの場合は、openlog & syslogの機能を使用できます。

制御端末(存在する場合)に出力する場合は、/dev/ttyデバイスを使用できます。

関連する問題