我的代码粘贴在下面。
我正在尝试使用 dup2 将我的输出重定向到文件。
如果我用它来重定向它工作正常(如果我删除评论),输出文件而不是标准输出。例如: ls > test ,导致 ls 输出到测试。
问题是没有 > 的 ls 不会输出任何东西。如果我按原样保留评论 ls 输出,尽管无法重定向。
redirect[0] 是 < 或 > 或什么都没有 redirect[1] 是要重定向到的文件的路径
command is 是一个 cstrings 数组,其中包含命令 commands 的图片
带有注释代码的示例输出
xxxxx@myshell:/home/majors/kingacev/ubuntumap/cop4610/proj1> ls
a.out myshell.c myshell.c~
xxxxx@myshell:/home/majors/kingacev/ubuntumap/cop4610/proj1>
代码未注释
xxxxx@myshell:/home/majors/kingacev/ubuntumap/cop4610/proj1> ls
xxxxx@myshell:/home/majors/kingacev/ubuntumap/cop4610/proj1>
/*
if (!strcmp(redirect[0],">")){
if ((fd = open(redirect[1], O_RDWR | O_CREAT)) != -1)
dup2(fd, STDOUT_FILENO);
close(fd);
}
*/
if (command[0][0] == '/'){
int c = execv(command[0], commands);
if (c != 0){
printf("ERROR: command does not exist at path specified\n");
exit(0);
}
}
else if (!execv(path, commands)){
exit(0);
}