3
下面是代码:使用DUP2交换标准输出与文件描述符,然后再返回
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;
}
我想什么发生的是“在标准输出”被打印到标准输出,“在缓冲区”打印到buffer.txt,然后“输出stdout”再次打印到标准输出。
实际发生在上面的代码“以标准输出”被打印到标准输出什么,“以缓冲液”被打印到buffer.txt”,但最后‘以标准输出’消息是无处被发现。