1

我想将标准输入/标准输出重定向到某个文件。该程序是为 Unix OS 编写的,但我认为使用标准 C/C++ 库而不是 OS 函数是好的。我知道如何使用操作系统功能来做到这一点dup2()open()但我阅读了一些使用reopen()onstdinstdout. 重新打开标准变量会做我想要的吗?它会替换以 0 和 1 文件描述符打开的文件吗?哪种方式更好?

4

1 回答 1

1

由于您正在编写自己的 shell,我将使用 dup2() 和 open() 的较低级别的函数。

标准输入上的 freopen() 将关闭原始标准输入,并在标准输入位置打开您要求的文件 - 所以您现在已经丢失了标准输入。当然,如果您使用 open() 和 dup2() 替换文件句柄 0 或 1,这并没有太大的区别 - 您仍然会丢失原始标准输入,所以只有在分叉后才这样做。

于 2012-12-23T21:22:59.643 回答