Código:
Como ven no está completo... alguna sugerencia? Muchas gracias. Saludos.#include<stdio.h> #include<stdlib.h> #include<signal.h> void manejador_ascendente(int,pid_t,int); main(int argc,char * argv[]) { pid_t pid_hijo,pid_patriarca; int i,numero_de_hijos; if(argc!=2) { printf("\n Numero incorrecto de parametros."); printf("\n Debes pasar solamente un parametro."); return 0; } if(atoi(argv[1])==0 && strcmp(argv[1],"0")) { printf("\n Has pasado como parametro una cadena."); printf("\n Debes pasar un entero como parametro."); return 0; } numero_de_hijos = atoi(argv[1]); pid_patriarca = getpid(); printf("\n %d",pid_patriarca); for(i=0;i<numero_de_hijos;i++) { switch(pid_hijo = fork()) { case -1: perror(" "); exit(2); case 0: printf("\n Hijo recien creado numero %d con PID = %d y con PID del padre = %d",i+1,getpid(),getppid()); if (i == numero_de_hijos-1) { printf("\n Proceso %d enviando SIGUSR1 a %d", i+1, getppid()); kill (getppid(), SIGUSR1); } break; default: while(1); pause(); } } } void manejador_ascendente(int sig,pid_t pid_patriarca,int i) { if (pid_patriarca != getpid()) { printf("\n Proceso %d Enviando SIGUSR1 a %d", i, getppid()); kill (getppid(), SIGUSR1); } else { } }
P.D: El resultado debería ser algo así:
Código:
@ programa 3 Hijo 1 creado. Hijo 2 creado. Hijo 3 creado. Hijo 3 listo. Hijo 2 listo. Hijo 1 listo. Proceso padre listo.