Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <sys/types.h>
- #include <signal.h>
- #include <unistd.h>
- int stop = 0;
- int p0;
- void ending(int sig){ // inicjator kasowania
- stop=1;
- }
- void odliczanie(int czas){
- printf(" PID: %d\t CZAS: %d\n", getpid(),czas);
- sleep(czas);
- printf("Minelo: %d sek.\n", czas);
- kill(p0, 42); // sygnal, ze odliczanie zakonczylo sie
- }
- int main()
- {
- p0 = getpid();
- printf(" PID: %d\n", getpid());
- int ilosc;
- printf("Podaj ilosc procesow: ");
- scanf("%d", &ilosc);
- int i=0;
- int p[ilosc];
- signal(42,ending);
- for(i=0; i<ilosc ; i++){ // utworzenie watkow
- if((p[i]=fork())==0){
- int czas = ((i*rand())%30)+30; // pseudolosowe losowanie
- odliczanie(czas);
- exit(0);
- }
- }
- while(stop==0); // stopowanie
- for(i=0 ; i<ilosc; i++){
- printf(" PID-kill: %d\n", p[i]);
- kill(p[i],SIGTERM); // zakonczenie procesow potomnych
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement