Test Foro de elhacker.net SMF 2.1

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.


#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

void get_possible_error(int value, const char *);
void wait_process(pid_t, const char *);

int main() {
pid_t child1_id=-1, child2_id=-1, child3_id=-1;

child1_id = fork();
get_possible_error(child1_id, "fork() child1_id");
if(child1_id == 0) { /* hijo1 */
/* sentencias... */
printf("hijo1\n");
} else { /* child1_id > 0 => padre */
child2_id = fork();
get_possible_error(child2_id, "fork() child2_id");
if(child2_id == 0) { /* hijo2 */
/* sentencias... */
printf("hijo2\n");
} else { /* padre */
child3_id = fork();
get_possible_error(child3_id, "fork() child3_id");
if(child3_id == 0) { /* hijo 3 */
/* sentencias... */
printf("hijo3\n");
}
else { /* padre */
wait_process(child1_id, "wait() child1");
wait_process(child2_id, "wait() child2");
wait_process(child3_id, "wait() child3");
}
}
}

return 0;
}

void get_possible_error(int value, const char *str) {
if(value<0) {
perror(str);
exit(1);
}
}

void wait_process(pid_t pid, const char *str) {
pid = wait(&pid);
get_possible_error(pid, str);
}