Quantcast
Channel: Preguntas más recientes con las etiquetas linux - Stack Overflow en español
Viewing all articles
Browse latest Browse all 1694

¿Por qué mi shell en C no corre el comando "ls"?

$
0
0

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;    }}

Viewing all articles
Browse latest Browse all 1694

Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>