shell中的输入输出重定向c

时间:2015-12-05 11:03:51

标签: c linux shell io

我实现了一个简单的shell。我想使用输入/输出重定向。我写了一些代码,但我的代码不起作用。这是我的代码:

3 个答案:

答案 0 :(得分:2)

您将FD复制到FD 0,即stdinstdout是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]的值与符号'>'进行比较。

如果不是这样,你能写一些关于错误的更多信息吗?