0
私はC++でSTDOUTから読み込もうとしていますが、私が見つけたすべての例はpipe
とdup
を使っていることを暗示しています。リダイレクトする前にSTDOUTを読むことは可能ですか?
cout << "Hello world" << endl;
/* ... */
read(STDOUT_FILENO, buffer, MAX_LEN)
私はC++でSTDOUTから読み込もうとしていますが、私が見つけたすべての例はpipe
とdup
を使っていることを暗示しています。リダイレクトする前にSTDOUTを読むことは可能ですか?
cout << "Hello world" << endl;
/* ... */
read(STDOUT_FILENO, buffer, MAX_LEN)
簡単な答えはSTDOUT_FILENO
から読み取れません。 read
の呼び出しは、STDOUT_FILENO
が読み込みに有効でないため、常にEBADF
を返します。そのため、人々はpipe
とdup
を使用しています。あなたがあなた自身の創造の何かをstd::cout
の出力バッファを交換する場合は次のことができ、How to redirect cin and cout to files?:
あなたが何をしたいのか、私が思うによりC++のアプローチを探しているなら、答えをチェックしてくださいしかし、それを操作する。残念ながら、これは出力操作をstd::cout
にのみキャプチャし、write(STDOUT_FILENO, ...)
、printf(...)
などの直接コールのようなものはキャプチャしません。それはまた私の経験ではより不便な方法です。
なぜSTDOUTを読みたいのですか?これは、書き込みを目的とした出力チャネルです。 – DyZ
[C++:STDOUTのリダイレクト]の可能な複製(http://stackoverflow.com/questions/4810516/c-redirecting-stdout) - 特に[この回答](http://stackoverflow.com/a/6211644/1241334)その質問に。 –
しかし 'cout'ではなく' ostringstream'にストリームしないのはなぜですか? – Nim