2 // Si no hay encolamiento de señales, solo la señal SIGUSR1 del primer hijo se recive
3 // las otras se pierden
7 #include <lib/routix.h>
12 #define DEMORA 0xaffff
15 void catchear_hijos(int);
24 struct sigaction senal
;
25 sigfillset(&senal
.sa_mask
);
26 senal
.sa_handler
= sig_usr1
;
27 sigaction(SIGUSR1
, &senal
, NULL
);
28 // signal(SIGUSR1, sig_usr1);
31 int l
= getvar("veces");
33 printf("No existe el valor veces. Seteandolo por default a 10");
36 sigfillset(&senal
.sa_mask
);
37 senal
.sa_handler
= catchear_hijos
;
38 sigaction(SIGCHLD
, &senal
, NULL
);
40 // signal(SIGCHLD, catchear_hijos);
42 for (j
=1 ; j
<=l
; j
++) {
46 if ((pides
[0]=fork())==0) {
47 if (execve("stress2a.bin", NULL
, NULL
)==-1)
51 if ((pides
[1]=fork())==0) {
52 if (execve("stress2a.bin", NULL
, NULL
)==-1)
56 if ((pides
[2]=fork())==0) {
57 if (execve("stress2a.bin", NULL
, NULL
)==-1)
61 if ((pides
[3]=fork())==0) {
62 if (execve("stress2a.bin", NULL
, NULL
)==-1)
66 printf("Esperando por info de hijos creados\n");
67 while (hijos_creados
< 4)
71 printf("\nStress info: se ha logrado ejecutar %d procesos\n", j
*4);
78 while (l
*4 > hijos_terminados
);
82 void catchear_hijos(int signo
)
85 printf("DEBERIA HABER RECIBIDO SIGCHLD y recibi: %d\n", signo
);
93 void sig_usr1(int signo
)
96 printf("en el handler de sigusr1 recibi: %d\n", signo
);
100 printf("SIGUSR1: un hijo Ok\n");