error: comparación entre un puntero y un entero

Estoy tratando de escribir un shell simple que pueda manejar la redirección. Sin embargo, me sale “error: comparación entre un puntero y un entero”. Entiendo por qué recibo el error, pero no estoy seguro de cómo solucionarlo. args se declara como:

static char* args[512]; 

Este es el código donde obtengo el error:

 if(args == ''){ int fd1 = creat("output.txt", 0644); dup2(fd1, STDOUT_FILENO); close(fd1); } 

El error está en la línea if (args == ”)

Cualquier sugerencia es bienvenida.

Supongo que args es un puntero char (char *). Si esto es así, estás comparando el puntero con un solo carácter. Puedes hacerlo así:

 if(args[0] == '>') //then do something 

Con la definición:

 static char* args[512]; 

la expresión args generará un char ** , por lo que se queja de la comparación con el '<' , un int .

El enfoque correcto en su caso, asumiendo que desea verificar toda la cadena, sería:

 if (strcmp (args[someIndex], "<") == 0) ... 

donde someIndex especifica qué elemento de matriz desea comprobar.

También existe la posibilidad de que solo desee comprobar el primer carácter de la cadena (como parte de un tipo de operación de redirección, por ejemplo: ) que sería:

 if (args[someIndex][0] == '<') ... 

pero considero que es poco probable dado que en realidad no usa el rest del argumento para abrir el archivo (en su lugar, usa el valor fijo input.txt ).