gpt4 book ai didi

c - 用于非内置命令的简单 shell 程序 unix 文件重定向

转载 作者:太空狗 更新时间:2023-10-29 11:06:05 27 4
gpt4 key购买 nike

我正在尝试编写一个简单的 shell 程序,但在非内置命令的文件重定向方面遇到了问题。例如 ./a.out < infile > outfile,将使用户编译的程序 a.out 从 infile 获取输入并将其输出输出到 outfile 而不是它通常使用的流。当我遇到一个非内置命令时,我会派生一个新进程并用提供的参数覆盖一个新图像。一般格式为 command arg1 arg2 ... argn < infile > outfile。因此 args(arg1 到 argn)将在新图像中传递,输入和输出将更改为 infile 和 outfile 这是我的 fork 过程的片段。

pid = fork();

if (pid < 0) {
fprintf(stderr, "*** fork error ***\n");
} else if (pid == 0) {
execvp(command, args);
}

waitpid(pid, &status, 0);

是否有允许我执行此操作的 unix 命令?我也在想可能有一种方法可以改变新图像中的标准输入和标准输出?任何链接或信息将不胜感激。

最佳答案

在 Unix 上,您通常需要 dup2 为此。参见 libc docs用于复制文件描述符。

关于c - 用于非内置命令的简单 shell 程序 unix 文件重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4882688/

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