Я пытаюсь написать простую оболочку, которая может обрабатывать redirect. Однако я получаю «ошибку: сравнение между указателем и целым числом». Я понимаю, почему я получаю сообщение об ошибке, но я не уверен, как это исправить. args объявляется как:
static char* args[512];
Это код, в котором я получаю сообщение об ошибке:
if(args == ''){ int fd1 = creat("output.txt", 0644); dup2(fd1, STDOUT_FILENO); close(fd1); }
Ошибка в строке if (args == ”)
Любые предложения приветствуются.
Я предполагаю, что args является указателем char (char *). Если это так, вы сравниваете указатель с одиночным символом. Вы можете сделать это следующим образом:
if(args[0] == '>') //then do something
С определением:
static char* args[512];
выражение args
будет генерировать char **
, поэтому он жалуется на сравнение с '<'
, int
.
Правильный подход в вашем случае, если вы хотите проверить всю строку, будет:
if (strcmp (args[someIndex], "<") == 0) ...
где someIndex
указывает, какой элемент массива вы хотите проверить.
Также есть вероятность, что вы хотите просто проверить первый символ строки (как часть типа перенаправления, например:
if (args[someIndex][0] == '<') ...
но я считаю, что маловероятно, что вы фактически не используете остальную часть аргумента для открытия файла (вместо этого вы используете фиксированное значение input.txt
).