使用Dup2重定向输入和输出

时间:2013-07-08 01:24:21

标签: c dup2

我一直在用C编写Unix shell,我正在尝试实现输入和输出重定向。我一直在使用Dup2,并且能够使我的输出重定向到文件,我的输入也被正确重定向。但是,在我完成之后,如何再次使用Stdin和Stdout?

这些是我在需要重定向时运行的代码片段:

在:

inFile = open(tok.infile, O_RDONLY, 0);
inDup = dup2(inFile, STDIN_FILENO);
close(inFile);

输出:

outFile = creat(tok.outfile, 0644);
outDup = dup2(outFile, STDOUT_FILENO);
close(outFile);

1 个答案:

答案 0 :(得分:1)

int stdinHolder = dup(0);
int stdoutHolder = dup(1);
close(0);
close(1);

然后在完成后你可以复制回stdin和stdout的持有者。

int stdinHolder = dup(1);
int stdoutHolder = dup(0);
close(0);
close(1);