PROCESOS ESN LINUX LENGUAJE C AYUDA

Iniciado por jesusillo0o, 20 Septiembre 2012, 05:11 AM

0 Miembros y 1 Visitante están viendo este tema.

jesusillo0o

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

0xDani

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

yoxter

Te recomiendo poxis es mas simple que fork (hasta donde se no le he provado)

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



Posiblemente soy el intento de programador mas fracaso de la historia !!

Javier235

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