我实现了一个简单的shell。我想使用输入/输出重定向。我写了一些代码,但我的代码不起作用。这是我的代码:
答案 0 :(得分:2)
您将FD复制到FD 0,即stdin
。 stdout
是FD 1.您还应该使用dup2
,这样您就可以明确指定要分配给哪个FD,以及保存FD的宏。
dup2(fd, STDOUT_FILENO);
您还应该更改
if (*args[i] == '>')
到
if (strcmp(args[i], ">") == 0)
否则它匹配任何以>
开头的参数,即使它后面还有其他字符。
答案 1 :(得分:1)
(习得在你的printf语句中写%s\n
)
当您编译的程序被称为myshell时,您将看到>当它作为参数给出时:
./myshell arg1 arg2 ">" arg4
当你不引用>
时,shell将负责重定向:
# Not what you want:
./myshell arg1 arg2 > arg4
会导致使用参数arg1和arg2调用myshell,并且myshell的结果将被重定向到arg4。
答案 2 :(得分:-2)
我认为你在If条件下不需要星号*。 您想要将args [x]的值与符号'>'进行比较。
如果不是这样,你能写一些关于错误的更多信息吗?