00001
00002
00003
00004 #include <stdarg.h>
00005 #include <routix.h>
00006 #include <sys/types.h>
00007 #include <lib/routix.h>
00008 #include <signal.h>
00009
00010 char msg[40];
00011
00012 #define DEMORA 0xaffff
00013
00014 pid_t pides[4];
00015 void catchear_hijos(int);
00016 void sig_usr1(int);
00017
00018 int hijos_terminados;
00019 int hijos_creados;
00020
00021
00022 void main(void)
00023 {
00024 signal(SIGUSR1, sig_usr1);
00025
00026 int i, j;
00027 int l = getvar("veces");
00028 if (l==-1) {
00029 printf("No existe el valor veces. Seteandolo por default a 10");
00030 l = 10;
00031 }
00032
00033 signal(SIGCHLD, catchear_hijos);
00034
00035 for (j=1 ; j<=l ; j++) {
00036
00037 hijos_creados = 0;
00038 if ((pides[0]=fork())==0) {
00039 if (execve("stress2a.bin", NULL, NULL)==-1)
00040 perror("exec");
00041 exit (-1);
00042 }
00043 if ((pides[1]=fork())==0) {
00044 if (execve("stress2a.bin", NULL, NULL)==-1)
00045 perror("exec");
00046 exit (-1);
00047 }
00048 if ((pides[2]=fork())==0) {
00049 if (execve("stress2a.bin", NULL, NULL)==-1)
00050 perror("exec");
00051 exit (-1);
00052 }
00053 if ((pides[3]=fork())==0) {
00054 if (execve("stress2a.bin", NULL, NULL)==-1)
00055 perror("exec");
00056 exit (-1);
00057 }
00058 printf("Esperando por info de hijos creados\n");
00059 while (hijos_creados < 4);
00060
00061
00062
00063 printf("\nStress info: se ha logrado ejecutar %d procesos\n", j*4);
00064 kill(pides[0], 4);
00065 kill(pides[1], 4);
00066 kill(pides[2], 4);
00067 kill(pides[3], 4);
00068 }
00069
00070 while (l*4 > hijos_terminados);
00071
00072 }
00073
00074 void catchear_hijos(int signo)
00075 {
00076 if (signo!=SIGCHLD) {
00077 printf("DEBERIA HABER RECIBIDO SIGCHLD y recibi: %d\n", signo);
00078 exit(-1);
00079 }
00080 int value;
00081 hijos_terminados++;
00082 wait(&value);
00083 }
00084
00085 void sig_usr1(int signo)
00086 {
00087 if (signo!=SIGUSR1) {
00088 printf("en el handler de sigusr1 recibi: %d\n", signo);
00089 exit(-1000);
00090 }
00091 hijos_creados++;
00092 printf("SIGUSR1: un hijo Ok\n");
00093 }