Extras din laborator
PROBLEMA:
16. Sa se scrie un program care simuleaza un cronometru.
La pornirea programului se initializeaza timpul cu valoarea 0.
La primirea semnalului SIGUSR1 va afisa timpul intermediar. La primirea semnalului SIGUSR2 se va opri.
ASPECTE TERORETICE:
Pentru efectuarea simularii unui cronometru am folosit apelul sistem signal, care primind unul din semnalele SIGALARM, SIGUSR1, SIGUSR2 duce la rezolvarea problemei.
PREZENTAREA SOLUTIEI:
Pentru inceput am implementat o functie(rutina_alarm) care doar incrementeaza un contor, aceasta functie fiind apelata la un interval de timp de o secunda (datorita apelului sistem alarm(1)).
Functia rutina_sigusr1 este apelata de catre sistem, atunci cand acesta primeste semnalul SIGUSR1 prin apelul sistem signal(SIGUSR1,rutina_sigusr1)
- acesta apeland functia rutina_sigusr1 ca fiind o rutina de tratare a semnalului SIGUSR1.
Functia rutina_sigusr2 opreste cronometrul, astfel seteaza valoarea secundelor la 0.
- aceasta rutina de tratare (functie) se apeleaza de sistem, cand acesta primeste semnalul SIGUSR2 prin apelul sistem signal(SIGUSR2,rutina_sigusr2);
Cu ajutorul apelului alarm(1) se porneste un timer care dupa o secunda, da controlul semnalului SIGALARM, acesta avand ca rutina de tratare, functia de la inceput: rutina_alarm
Pentru ca, cronometrul sa functioneze continuu se foloseste o bucla (while(1)) si apelul sistem pause() care asteapta un semnal pentru o secunda, astfel:
- sistemul trimite semnalul SIGALARM si timpul incrementeaza
Preview document
Conținut arhivă zip
- c.c
- Semnale.doc