Semnal e

download Semnal e

If you can't read please download the document

description

cv

Transcript of Semnal e

NUME: *********GRUPA: 223SEMIGRUPA: ***-*USERNAME: ******_______________________________________________________________________________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 uninterval 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 sistemsignal(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 sistemsignal(SIGUSR2,rutina_sigusr2);Cu ajutorul apelului alarm(1) se porneste un timer care dupa o secunda , da controlul semnalului SIGALARM , acesta avand carutina de tratare , functia de la inceput : rutina_alarmPentru ca , cronometrul sa functioneze continuu se foloseste o bucla (while(1)) si apelul sistem pause() care asteaptaun semnal pentru o secunda , astfel : - sistemul trimite semnalul SIGALARM si timpul incrementeaza_______________________________________________________________________________INSTRUCTIUNI DE RULARE:Compilarea programului : -bash-2.05b$ make semnale (fara extensia .c , e vazuta implicit de utilizarul make)sau-bash-2.05b$ gcc semnale.c -o semnale-bash-2.05b$ ./semnale &[1] 28068-bash-2.05b$ kill -USR1 28068-bash-2.05b$ S-au scurs 5 secundekill -USR1 28068-bash-2.05b$ S-au scurs 9 secundekill -USR1 28068-bash-2.05b$ S-au scurs 11 secunde-bash-2.05b$ kill -USR2 28068-bash-2.05b$