我正在尝试编写一个可以处理重定向的简单shell。但是,我得到“错误:指针和整数之间的比较”。我理解为什么我收到错误,但我不确定如何解决它。 args声明为:
static char* args[512];
这是我收到错误的代码:
if(args == '<'){
int fd0 = open("input.txt", READ, 0);
dup2(fd0, STDIN_FILENO);
close(fd0);
}
if(args == '>'){
int fd1 = creat("output.txt", 0644);
dup2(fd1, STDOUT_FILENO);
close(fd1);
}
错误在行中if(args =='&lt;')和if(args =='&gt;')
欢迎任何建议。
答案 0 :(得分:1)
我假设args是一个指针char(char *)。 如果是这样,您将指针与单个字符进行比较。 你可以这样做:
if(args[0] == '>')
//then do something
答案 1 :(得分:1)
定义:
static char* args[512];
表达式args
会生成char **
,这就是为什么它抱怨与'<'
,int
进行比较的原因。
假设您要检查整个字符串,在您的情况下正确的方法是:
if (strcmp (args[someIndex], "<") == 0) ...
其中someIndex
指定要检查的数组元素。
还有可能你只想检查字符串的第一个字符(作为重定向操作类型的一部分,例如:<infile.txt
),这将是:
if (args[someIndex][0] == '<') ...
但我认为这不太可能,因为你实际上没有使用参数的其余部分来打开文件(你使用固定值input.txt
代替)。