redirectI / O,在C中实现一个shell

我正在实现一个shell,在我的shell中,我必须能够处理'>'''''>>''|'。 我得到了大部分的工作,但是当用户想要在命令行input如下所示:

SHELL$ sort < input > output 

我没有得到确切的结果。 我得到的是sorting发送输出到STDOUT,然后从STDINsorting阅读和发送输出到“输出”

我知道我必须使用sorting的inputredirect

 dup2(fd, STDIN_FILENO) 

fd是input文件的文件描述符。

我很好奇的部分是如何redirectsorting的输出,而不是发送输出到STDOUT,发送给我们“>”指向,在我的例子是输出

所以命令sorting读取input:“sorting<input”和这个:“>输出”将最终将sorting的输出发送到“输出”。

提前致谢!

 in = open("input",O_RDONLY); dup2(in,STDIN_FILENO); close(in); out = open("output",O_WRONLY|O_CREAT,0666); // Should also be symbolic values for access rights dup2(out,STDOUT_FILENO); close(out); execlp("sort","sort",NULL);