Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用Dup2重定向输入和输出_C_Dup2 - Fatal编程技术网

C 使用Dup2重定向输入和输出

C 使用Dup2重定向输入和输出,c,dup2,C,Dup2,我一直在用C编写unixshell,并试图实现输入和输出重定向。我已经为此使用了Dup2,并且能够使它使我的输出重定向到一个文件,并且我的输入也被正确重定向。但是,在我完成这些之后,我如何再次使用Stdin和Stdout呢 以下是我在需要重定向时运行的代码片段: 在: 输出: 完成后,您可以复制回stdin和stdout的持有者 int stdinHolder = dup(1); int stdoutHolder = dup(0); close(0); close(1); 我想你应该重新试验一

我一直在用C编写unixshell,并试图实现输入和输出重定向。我已经为此使用了Dup2,并且能够使它使我的输出重定向到一个文件,并且我的输入也被正确重定向。但是,在我完成这些之后,我如何再次使用Stdin和Stdout呢

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

在:

输出:

完成后,您可以复制回stdin和stdout的持有者

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

我想你应该重新试验一下,如果你不关闭它们,我会尝试将2与0和1相加。
outFile = creat(tok.outfile, 0644);
outDup = dup2(outFile, STDOUT_FILENO);
close(outFile);
int stdinHolder = dup(0);
int stdoutHolder = dup(1);
close(0);
close(1);
int stdinHolder = dup(1);
int stdoutHolder = dup(0);
close(0);
close(1);