首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重定向I/O,用C++实现shell

重定向I/O,用C++实现shell
EN

Stack Overflow用户
提问于 2013-11-08 04:42:57
回答 1查看 18K关注 0票数 3

我正在实现一个shell,并且在我的shell中我必须能够处理'>‘<’>>‘|’。我让它大部分正常工作,但当用户想要在命令行中输入时,例如:

代码语言:javascript
复制
SHELL$ sort < input > output

我没有得到确切的结果。我得到的是排序将输出发送到STDOUT,然后排序从STDIN读取并将输出发送到" output“

我知道我必须使用以下命令重定向排序的输入

代码语言:javascript
复制
dup2(fd, STDIN_FILENO)

fd是输入文件的文件描述符。

我好奇的是,我如何重定向排序的输出,而不是将输出发送到STDOUT,而是将其发送到w.e '>‘所指向的,在我的示例中是output

因此,命令sort读取input:“sort < input”,而this:“> output”最终会将sort的输出发送到" output“。

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-08 04:48:53

代码语言:javascript
复制
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);
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19846272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档