Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: jesusillo0o en 20 Septiembre 2012, 05:11 am



Título: PROCESOS ESN LINUX LENGUAJE C AYUDA
Publicado por: jesusillo0o en 20 Septiembre 2012, 05:11 am
programa en Lenguaje C que solicite un número entero n y que posteriormente cree cuatro procesos.

    El proceso padre imprimirá si el número n es par o impar
    Un proceso hijo imprimirá si el número n es primo
    Otro proceso hijo imprimirá el valor de la sumatoria de 1 hasta n
    Otro proceso hijo imprimirá el factorial de n
    Otro proceso hijo imprimirá el n'esimo término de la serie de fibonaci


Título: Re: PROCESOS ESN LINUX LENGUAJE C AYUDA
Publicado por: 0xDani en 20 Septiembre 2012, 15:32 pm
No se hacen tareas, pero te dejo esto: http://lmgtfy.com/?q=fork()

Saludos.


Título: Re: PROCESOS ESN LINUX LENGUAJE C AYUDA
Publicado por: yoxter en 21 Septiembre 2012, 04:51 am
Te recomiendo poxis es mas simple que fork (hasta donde se no le he provado)

https://computing.llnl.gov/tutorials/pthreads/ (https://computing.llnl.gov/tutorials/pthreads/)


Título: Re: PROCESOS ESN LINUX LENGUAJE C AYUDA
Publicado por: Javier235 en 21 Septiembre 2012, 08:01 am
Fijate si te anda esto... después nos contás.

Código
  1. #include <unistd.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. void get_possible_error(int value, const char *);
  6. void wait_process(pid_t, const char *);
  7.  
  8. int main() {
  9. pid_t child1_id=-1, child2_id=-1, child3_id=-1;
  10.  
  11. child1_id = fork();
  12. get_possible_error(child1_id, "fork() child1_id");
  13. if(child1_id == 0) { /* hijo1 */
  14. /* sentencias... */
  15. printf("hijo1\n");
  16. } else { /* child1_id > 0 => padre */
  17. child2_id = fork();
  18. get_possible_error(child2_id, "fork() child2_id");
  19. if(child2_id == 0) { /* hijo2 */
  20. /* sentencias... */
  21. printf("hijo2\n");
  22. } else { /* padre */
  23. child3_id = fork();
  24. get_possible_error(child3_id, "fork() child3_id");
  25. if(child3_id == 0) { /* hijo 3 */
  26. /* sentencias... */
  27. printf("hijo3\n");
  28. }
  29. else { /* padre */
  30. wait_process(child1_id, "wait() child1");
  31. wait_process(child2_id, "wait() child2");
  32. wait_process(child3_id, "wait() child3");
  33. }
  34. }
  35. }
  36.  
  37. return 0;
  38. }
  39.  
  40. void get_possible_error(int value, const char *str) {
  41. if(value<0) {
  42. perror(str);
  43. exit(1);
  44. }
  45. }
  46.  
  47. void wait_process(pid_t pid, const char *str) {
  48. pid = wait(&pid);
  49. get_possible_error(pid, str);
  50. }
  51.