Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<unistd.h>
- #include<sys/types.h>
- #include<sys/wait.h>
- #include<signal.h>
- #include<string.h>
- #include<stdlib.h>
- #include<errno.h>
- #include<time.h>
- void sign(int _sig)
- {
- switch(_sig)
- {
- case SIGUSR1:
- printf("Ojciec: dostalem od syna wiadomosc typu 1\n");
- break;
- case SIGUSR2:
- printf("Ojciec: dostalem od syna wiadomosc typu 2\n");
- break;
- }
- }
- int main()
- {
- srand(time(NULL));
- int pid, losowa, przodek;
- /*
- sigset_t iset;
- struct sigaction my_sig;
- sigemptyset(&iset);
- my_sig.sa_mask = iset;
- my_sig.sa_flags = 0;
- my_sig.sa_handler = &sign;
- my_sig.sa_flags = SA_SIGINFO;
- my_sig.sa_sigaction = &sign;
- sigaction(SIGUSR1, &my_sig, NULL);
- sigaction(SIGUSR2, &my_sig, NULL);
- */
- signal(SIGUSR1, sign);
- signal(SIGUSR2, sign);
- pid = fork();
- if(pid == 0)
- {
- przodek = getppid();
- sleep(1);
- while(1)
- {
- losowa = (rand() % 2) + 1;
- if(losowa == 1)
- kill(przodek, SIGUSR1);
- else if(losowa == 2)
- kill(przodek, SIGUSR2);
- else
- printf("Potomek: BLAD!\n");
- sleep(1);
- }
- }
- else if(pid > 0)
- {
- wait(&pid);
- }
- else
- {
- fprintf(stderr, strerror(errno), "\n");
- }
- exit(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement