jueves, 22 de septiembre de 2011

PRACTICA 2

#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>

int main (void) {

/**ATENCIÓN: Declaración de variables del programa a probar. Es sólo un exemplo**/
    int i;
    int n = 4;
    int childpid;

/**El resto de variables son para que la presentación de los resultados por pantalla sea posible**/
 
    int a, p;
    int ret;
    FILE *fpipe;
    char comanda[50]; /*String dónde se guarda el comando a ejecutar por el 1r hijo*/
    char line[256];        
    p = getpid();

    sprintf(comanda,"pstree -n -p %d\n",getpid()); /*Concatenamos el comando pstree con el pid del padre*/

    ret = fork();

    if (ret == 0) { /*Este es el primer hijo del padre*/
        if ( !(fpipe = (FILE*)popen(comanda,"r")) ) {  /* Si el pipe falla*/
            perror("Problemas con el pipe!!!");
            exit(1);
        }
        while ( fgets( line, sizeof line, fpipe))
        {
            printf("%s", line); /*Escribimos por pantalla lo que retorna el hijo. La salida del pstree*/
        }
        pclose(fpipe);

     
    } else {
        /*El primer hijo sólo se crea para hacer un pstree y poder ver por pantalla */
        /*el árbol de procesos generado*/

        /*El código que viene a continuación, lo podéis substituir por lo que se tercie*/
        /*¡¡Las variables han de ir declaradas arriba!!!*/

     
        for (i = 1; i < n; i++) {
            if ((childpid = fork()) == -1) {
                break;
                }
            fprintf(stderr, "Este es el proceso %ld com padre %ld\n", (long)getpid(), (long)getppid());     
                    }
        sleep(1); /*Es sólo para dar tiempo a terminar a todos los hijos*/

    }
exit(0);
}



¿PORQUE APARECEN MENSAJES REPETIDOS?
Por que se va incrementando con cada nuevo proceso creado con una llamada fork().


¿QUE OBSERVAS?
El llamado de varios procesos hijos diferentes


¿POR QUE?
Por que es un arbol y este puede tener de cero a mas hijos conectados a el.







No hay comentarios:

Publicar un comentario