gpt4 book ai didi

c - 重定向 I/O,在 C 中实现 shell

转载 作者:太空狗 更新时间:2023-10-29 15:55:07 25 4
gpt4 key购买 nike

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

SHELL$ sort < input > output

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

我知道我必须使用

重定向 sort 的输入
dup2(fd, STDIN_FILENO)

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

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

因此命令 sort 读取输入:“sort < input”和这个:“> output”最终会将 sort 的输出发送到“output”。

提前致谢!

最佳答案

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);

关于c - 重定向 I/O,在 C 中实现 shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19846272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com