[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