Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <unistd.h>
- #include <signal.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <sys/shm.h>
- #include <sys/types.h>
- #include <wait.h>
- #include <fcntl.h>
- #include <sys/ipc.h>
- #include <sys/stat.h>
- void salir_si_error(char *);
- void handler_usuario1(int);
- void handler_usuario2(int);
- int maxNum = 0;
- int main(void)
- {
- struct sigaction accion;
- key_t Clave;
- pid_t pid1, pid2;
- //int IDM;
- //int * Memoria;
- int aux = 0;
- printf("Ingrese un num max: ");
- scanf("%d",&maxNum);
- Clave = ftok ("/bin/ls", 33);
- if (Clave == -1)
- {
- printf("Error, no existe la clave\n");
- exit(EXIT_FAILURE);
- }
- printf("Fin primera etapa\n");
- pid1 = fork();
- if(pid1 == -1)
- {
- printf("ERROR\n");
- exit(EXIT_FAILURE);
- }
- if (pid1 == 0)
- {
- printf("Comienzo Segunda Etapa\n");
- accion.sa_handler = handler_usuario1;
- sigemptyset(&accion.sa_mask);
- accion.sa_flags = SA_NOCLDSTOP;
- if((sigaction(SIGUSR1, &accion, NULL)) < 0)
- {
- salir_si_error("sigaction");
- }
- printf("Fin Segunda Etapa\n");
- exit(EXIT_SUCCESS);
- }
- else
- {
- pid2 = fork();
- if(pid2 == -1)
- {
- printf("ERROR\n");
- exit(EXIT_FAILURE);
- }
- if (pid2 == 0)
- {
- printf("Comienzo Tercera Etapa\n");
- accion.sa_handler = handler_usuario2;
- sigemptyset(&accion.sa_mask);
- accion.sa_flags = SA_NOCLDSTOP;
- if((sigaction(SIGUSR2, &accion, NULL)) < 0)
- {
- salir_si_error("sigaction");
- }
- printf("Fin Tercera Etapa\n");
- exit(EXIT_SUCCESS);
- }
- kill(pid1, SIGUSR1);
- /*while (aux <= maxNum)
- {
- //printf("estoy en el while!\n");
- kill(pid1, SIGUSR1);
- kill(pid2, SIGUSR2);
- } */
- exit(EXIT_SUCCESS);
- }
- }
- void salir_si_error(char *mensaje)
- {
- perror(mensaje);
- exit(EXIT_FAILURE);
- }
- void handler_usuario1(int signum)
- {
- int aux =0;
- if(signum == SIGUSR1)
- {
- printf("heyyyy bro!");
- }
- else
- {
- printf("Interceptada %d\n", signum);
- }
- }
- void handler_usuario2(int signum)
- {
- int aux = 0;
- if(signum == SIGUSR2)
- {
- printf("heyyyy bro 2!");
- }
- else
- {
- printf("Interceptada %d\n", signum);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement