以下是代码:
int main()
{
std::cout << "In stdout" << std::endl;
int stdoutBack = dup(1);
close(1);
int output = open("buffer.txt", O_RDWR|O_CREAT|O_APPEND, 0777);
dup2(output, 1);
std::cout << "In buffer" << std::endl;
dup2(output, stdoutBack);
close(output);
std::cout << "In stdout" << std::endl;
}
我希望的效果是,将"In stdout"打印到标准输出中,将"In buffer"打印到buffer.txt文件中,然后再次将"In stdout"打印到标准输出中。
但实际上,上述代码中发生的是"In stdout"被打印到标准输出中,"In buffer"被打印到buffer.txt文件中,但最后一条"In stdout"消息无法找到。