我正在实现一个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);