[so] tema 5 linux probleme cu timer
Razvan Deaconescu
razvand at cs.pub.ro
Thu Feb 1 10:49:24 EET 2007
dragos barbulescu wrote:
> Salut,
>
> Am nevoie la tema 5 sa folosesc un timer care sa imi dea un semnal de alarma. L-am implementat dar cand l-am uploadat pe site am vazut ca imi da o eroare de Alarm in
> /bin/sh: line 1: 2333 Alarm clock ./test
Hmmm ... un timer. Stii, enuntul de anul trecut cerea folosirea unui
timer pentru implementarea algoritmului LRU (Last Recently Used) de
inlocuire a paginii. Anul acesta nu e nevoie de asa ceva. Inlocuirea
unei pagini poate fi facuta oricum.
Sigur ai citit atent enuntul si nu incerci sa modifici o tema de anul
trecut?
> Si am testat iar tema la mine. Am avut surpriza sa constat ca daca sunt logat pe root imi merge dar cand sunt
> pe alt user imi da aceeasi eroare sau se blocheaza
> Iata cum am folosit timerul:
> //initialise counter
> lru_timer.it_value.tv_sec = 0;
> lru_timer.it_value.tv_usec = TIMER_PERIOD;
> lru_timer.it_interval.tv_sec = 0;
> lru_timer.it_interval.tv_usec = TIMER_PERIOD;
>
> //start timer
> setitimer(ITIMER_REAL, &lru_timer, NULL);
>
ai uitat sa pui handler pentru SIGALRM (SIGALRM este livrat de setitimer
in cazul folosirii ITIMER_REAL)
uite un mic exemplu
------------------------------------------------------------
/*
* itimer.c - itimer test - does it work only as root?
*
* Razvan Deaconescu
*/
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
#include <sys/time.h>
void alarm_handler (int signo)
{
printf ("alarm received\n");
}
int main (void)
{
struct sigaction sigact;
struct itimerval timer;
sigact.sa_handler = alarm_handler;
sigemptyset (&sigact.sa_mask);
sigact.sa_flags = SA_RESETHAND;
sigaction (SIGALRM, &sigact, NULL);
timer.it_value.tv_sec = 1;
timer.it_value.tv_usec = 0;
timer.it_interval.tv_sec = 1;
timer.it_interval.tv_usec = 0;
/* ITIMER_REAL forces delivery of SIGALRM */
setitimer (ITIMER_REAL, &timer, NULL);
/* wait for signal */
pause ();
/* equivalent */
/*
* alarm (1);
*
* pause ();
*/
return 0;
}
------------------------------------------------------------
rezultatul rularii:
razvan at asgard:~/junk$ gcc -Wall -o itimer itimer.c
razvan at asgard:~/junk$ ./itimer
alarm received
razvan at asgard:~/junk$
Razvan
More information about the so
mailing list