我正在实现一个shell,并且在我的shell中我必须能够处理'>‘<’>>‘|’。我让它大部分正常工作,但当用户想要在命令行中输入时,例如:
SHELL$ sort < input > output我没有得到确切的结果。我得到的是排序将输出发送到STDOUT,然后排序从STDIN读取并将输出发送到" output“
我知道我必须使用以下命令重定向排序的输入
dup2(fd, STDIN_FILENO)fd是输入文件的文件描述符。
我好奇的是,我如何重定向排序的输出,而不是将输出发送到STDOUT,而是将其发送到w.e '>‘所指向的,在我的示例中是output
因此,命令sort读取input:“sort < input”,而this:“> output”最终会将sort的输出发送到" output“。
提前感谢!
发布于 2013-11-08 04:48:53
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);https://stackoverflow.com/questions/19846272
复制相似问题