【发布时间】:2011-06-20 10:35:17
【问题描述】:
我正在尝试编写一个简单的 shell 程序,但遇到了非内置命令的文件重定向问题。例如 ./a.out outfile,会让用户编译的程序 a.out 从 infile 获取输入并将其输出输出到 outfile 而不是它通常使用的流。当我遇到非内置命令时,我会创建一个新进程并使用提供的参数覆盖一个新图像。一般格式是命令 arg1 arg2 ... argn outfile。因此 args(arg1 到 argn)将在新图像中传递,输入和输出将更改为 infile 和 outfile 这是我的分叉过程的 sn-p。
pid = fork();
if (pid < 0) {
fprintf(stderr, "*** fork error ***\n");
} else if (pid == 0) {
execvp(command, args);
}
waitpid(pid, &status, 0);
是否有一个 unix 命令可以让我这样做?我还在想可能有一种方法可以更改新图像中的标准输入和标准输出?任何链接或信息将不胜感激。
【问题讨论】:
-
"fork error" 不是有用的消息。请使用 perror()。
标签: c linux shell unix redirect