我想编写一个充当远程外壳的守护程序。因此我必须关闭标准输入、标准输出和标准错误。
现在我想知道这是如何正确完成的。
std::streambuf * old = std::cout.rdbuf(mStdOut.rdbuf());
std::cout << "Bla" << std::endl;
std::string text = mStdOut.str();
这有效,流现在被重定向。但是“老”是什么意思?这不是旧缓冲区,应该删除吗?当我尝试删除它时,我得到一个空指针异常,即使指针本身不是 NULL。那么我怎样才能摆脱它,或者我可以简单地忽略它?如果忽略它,守护程序是否与终端正确解除关联?
stderr 和 stdin 也是如此,但我认为处理方式是相同的。