小编Bra*_*org的帖子

使用dup2将stdout与文件描述符交换,然后再返回

这是代码:

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;
}
Run Code Online (Sandbox Code Playgroud)

我想要发生的是"在标准输出"打印到标准输出,"在缓冲区"打印到buffer.txt,然后"在标准输出"再次打印到标准输出.

在上面的代码中实际发生的是"在stdout中"打印到stdout,"在缓冲区"打印到buffer.txt",但最后一个"输入stdout"消息无处可寻.

c c++ stdout dup2

4
推荐指数
1
解决办法
2611
查看次数

标签 统计

c ×1

c++ ×1

dup2 ×1

stdout ×1