2013-07-08 45 views
0

我一直在C编写一个Unix shell,我试图实现输入和输出重定向。我一直在使用Dup2,并且能够将它输出重定向到一个文件,并且我的输入也被正确地重定向。但是,在完成这些之后,如何返回使用Stdin和Stdout?使用Dup2重定向输入和输出

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

在:

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); 
+0

我认为你应该重新试验,并找出,如果你没有关闭他们,我会尝试将配音替换为0和1。 – aah134

回答

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

然后在完成后,你可以DUP回到stdin和stdout的持有者。

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