リモートシェルとして機能するデーモンを書きたかったのです。そのため、標準入力、標準出力、および標準エラー出力を閉じる必要があります。
これがどのように適切に行われるかを知りたいと思います。
std::streambuf * old = std::cout.rdbuf(mStdOut.rdbuf());
std::cout << "Bla" << std::endl;
std::string text = mStdOut.str();
これが機能し、ストリームがリダイレクトされるようになりました。しかし、「古い」の意味は何ですか?これは古いバッファではなく、削除する必要がありますか? 削除しようとすると、ポインター自体が NULL ではないにもかかわらず、NULL ポインター例外が発生します。では、どうすればそれを取り除くことができますか、または単に無視できますか? 無視する場合、デーモンは端末から適切に切り離されていますか?
stderr と stdin も同じですが、扱いは同じだと思います。