Tengo este código que es un shell básico de Linux en C, al ejecutarlo funcionan varios comandos como "pwd", también funciona "ls -lh /bin" pero antes de que me muestre el resultado me sale un error con "ls" y no logro que funcione el comando "ls" solo, y no sé qué podría ser.Tengo todos los includes necesarios y no me presenta errores de compilación, solo al momento de ingresar "ls". Este es el error: ls: cannot access '': No such file or directory
void parsing(char *line, char **argv) { while (*line != '\0') { while (*line == '' || *line == '\t' || *line == '\n') *line++ = '\0'; *argv++ = line; while (*line != '\0'&& *line != ''&& *line != '\t'&& *line != '\n') line++; } *argv = '\0';}//proceso del forkvoid forkprocess(char **argv) { pid_t pid; int status; if ((pid = fork()) < 0) { printf("Fork failed\n"); exit(1); } else if (pid == 0) { if (execvp(*argv, argv) < 0) { printf("Exec failed\n"); exit(1); } } else{ while (wait(&status) != pid); }}int main(int argc, char *argv[64]) { char line[1024]; while (1) { printf(">>"); //shell //recibe el comando ingresado por teclado fgets(line,1024,stdin); printf("\n"); parsing(line, argv); //si la entrada es igual a QUIT sale if (strcmp(argv[0], "QUIT") == 0) { printf("BYE!\n"); exit(0); } forkprocess(argv); }//return 0;}
Tengo en el main también un método para agregar la función de ayuda al ejecutar ./programa -h, no sé si eso contribuya al error
int opt;
//metodo de opcion de ayuda ./jarvis -h while ((opt = getopt (argc, argv, "h")) != -1){ switch(opt) { case 'h': print_help(argv[0]); return 0; default: fprintf(stderr, "uso: %s <comando>\n", argv[0]); fprintf(stderr, " %s -h\n", argv[0]); return 1; }}