Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: xemnas en 12 Enero 2014, 15:03 pm



Título: ayuda codigo c
Publicado por: xemnas en 12 Enero 2014, 15:03 pm
me estoy leyendo un pdf de llamadas a sistema pero no logro entender el siguiente codigo, si alguien me puede explicar que hace se lo agradecería =).

Código
  1. #include <sys/wait.h>
  2. #include <unistd.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. int main(int argc, char *argv[])
  7. {
  8. pid_t childpid;
  9. int status, exit_code, x;
  10.  
  11. exit_code = EXIT_SUCCESS;
  12.  
  13. if (argc < 2)
  14. {
  15. printf(“Usage: %s command args\n“, argv[0]);
  16. exit_code = EXIT_FAILURE;
  17. }
  18. else
  19. {
  20. switch (childpid = fork())
  21. {
  22. case -1:
  23. perror("Could not fork\n");
  24. exit_code = EXIT_FAILURE;
  25. break;
  26. case 0:
  27. if (execvp(argv[1], &argv[1]) < 0)
  28. {
  29. perror(“Could not execute the command\n”);
  30. exit_code = EXIT_FAILURE;
  31. break;
  32. }


Título: Re: ayuda codigo c
Publicado por: rir3760 en 12 Enero 2014, 18:53 pm
Si estas leyendo un manual este debería indicar antes o después del ejemplo la intención y operación de las llamadas empezando por fork (http://linux.die.net/man/2/fork).

En cuanto al programa este solo verifica si se pasa al menos un argumento, si es así llama primero a fork para crear un proceso hijo y a continuación ejecuta el programa indicado mediante execvp.

Un saludo