2017-01-16 5 views
0

私はC++でSTDOUTから読み込もうとしていますが、私が見つけたすべての例はpipedupを使っていることを暗示しています。リダイレクトする前にSTDOUTを読むことは可能ですか?

cout << "Hello world" << endl; 

/* ... */ 

read(STDOUT_FILENO, buffer, MAX_LEN) 
+1

なぜSTDOUTを読みたいのですか?これは、書き込みを目的とした出力チャネルです。 – DyZ

+0

[C++:STDOUTのリダイレクト]の可能な複製(http://stackoverflow.com/questions/4810516/c-redirecting-stdout) - 特に[この回答](http://stackoverflow.com/a/6211644/1241334)その質問に。 –

+0

しかし 'cout'ではなく' ostringstream'にストリームしないのはなぜですか? – Nim

答えて

2

簡単な答えはSTDOUT_FILENOから読み取れません。 readの呼び出しは、STDOUT_FILENOが読み込みに有効でないため、常にEBADFを返します。そのため、人々はpipedupを使用しています。あなたがあなた自身の創造の何かをstd::coutの出力バッファを交換する場合は次のことができ、How to redirect cin and cout to files?


あなたが何をしたいのか、私が思うによりC++のアプローチを探しているなら、答えをチェックしてくださいしかし、それを操作する。残念ながら、これは出力操作をstd::coutにのみキャプチャし、write(STDOUT_FILENO, ...)printf(...)などの直接コールのようなものはキャプチャしません。それはまた私の経験ではより不便な方法です。

関連する問題