【发布时间】:2014-10-20 22:50:15
【问题描述】:
我正在使用dup2() 函数来尝试更好地掌握它。
从手册上看,它需要两个参数。第一个是现有的文件描述符,第二个参数是复制的文件描述符。
我决定尝试将标准输出重定向到管道的写入端。
从手册来看,我认为代码应该是......
if ((dup2(STDOUT_FILENO, fd[1])) <= 0)
{
printf("error on dup \n");
}
write(STDOUT_FILENO, "Hi \n", 5);
因为标准输出现在将被复制到 fd[1]。因此,如果我们写到标准输出,我们应该写到写管道结束。但是,这仍然会打印到屏幕上。所以我认为它应该是 fd[1] 后跟标准输出。这是否意味着 stdout 现在是 fd[1] 的副本,这就是它起作用的原因。
最后,如果我想写回屏幕......我将如何在同一过程中执行此操作?
【问题讨论】: