Provided by: manpages-fr-dev_3.27fr1.4-1_all bug

NOM

       getitimer, setitimer - Lire/ecrire la valeur d'une temporisation

SYNOPSIS

       #include <sys/time.h>

       int getitimer(int which, struct itimerval *curr_value);
       int setitimer(int which, const struct itimerval *new_value,
                     struct itimerval *old_value);

DESCRIPTION

       Le  systeme fournit pour chaque processus trois temporisations, chacune
       avec un fonctionnement particulier. Lorsqu'une temporisation expire, un
       signal   est   envoye   au  processus  et  la  temporisation  redemarre
       eventuellement.

       ITIMER_REAL    decroit en temps reel et un signal SIGALRM  est  emis  a
                      l'expiration du delai.

       ITIMER_VIRTUAL decroit  uniquement  quand le processus s'execute, et un
                      signal SIGVTALRM est emis a l'expiration du delai.

       ITIMER_PROF    decroit a la fois quand le processus s'execute, et quand
                      le  processeur  execute  des  fonctions  systemes  a  la
                      demande  du  processus.  Cette  temporisation,  utilisee
                      conjointement   avec  ITIMER_VIRTUAL,  est  generalement
                      utilisee pour obtenir le profil d'execution du processus
                      entre  les  fonctionnalites  utilisateur  et  le  noyau.
                      SIGPROF est emis a l'expiration du delai.

       Les valeurs  des  temporisations  sont  definies  avec  les  structures
       suivantes :

           struct itimerval {
               struct timeval it_interval; /* valeur suivante */
               struct timeval it_value;    /* valeur actuelle */
           };

           struct timeval {
               long tv_sec;                /* secondes        */
               long tv_usec;               /* micro secondes  */
           };

       La  fonction  getitimer() renseigne la structure pointee par curr_value
       avec le parametrage  de  la  temporisation  indique  par  which  (parmi
       ITIMER_REAL,  ITIMER_VIRTUAL,  ou  ITIMER_PROF). L'element it_value est
       rempli avec le delai restant dans  la  temporisation,  ou  zero  si  la
       temporisation  est desactivee. De meme, it_interval sera rempli avec la
       valeur originale de la temporisation.

       La fonction setitimer() positionne la temporisation avec les valeurs de
       new_value. Si old_value n'est pas NULL, les parametres precedents de la
       temporisation y sont inscrits.

       Les temporisations decroissent  de  it_value  a  zero,  declenchent  un
       signal,  et sont replacees a it_interval. Une temporisation s'arrete si
       elle est mise a zero (it_value  vaut  zero)  ou  bien  elle  expire  et
       it_interval vaut zero.

       Les  deux  champs  tv_sec  et  tv_usec sont utilises pour determiner la
       duree d'une temporisation.

       Les temporisations n'expirent jamais avant la fin du temps  requis,  et
       expirent plutot avec un court delai apres la limite. Ce delai depend de
       la resolution de la temporisation systeme et de la charge du  systeme ;
       consultez  time(7)  (mais  consultez  la  section BOGUES ci-dessous). A
       l'expiration,  un  signal   est   declenche   puis   la   temporisation
       reinitialisee.  Si  la  temporisation expire alors que le processus est
       actif (toujours  vrai  avec  ITIMER_VIRTUAL)  le  signal  sera  delivre
       immediatement.  Autrement,  il y aura un petit delai avant reception du
       signal, dependant de la charge du systeme.

VALEUR RENVOY'EE

       S'il reussit, cet appel systeme renvoie 0. S'il echoue, il  renvoie  -1
       et remplit errno en consequence.

ERREURS

       EFAULT new_value,   old_value  ou  curr_value  n'est  pas  un  pointeur
              valable.

       EINVAL which n'est ni ITIMER_REAL, ni ITIMER_VIRTUAL, ni  ITIMER_PROF ;
              ou (depuis Linux 2.6.22) un des champs tv_usec dans la structure
              pointee par new_value contient une valeur hors de l'intervalle 0
              a 999 999.

CONFORMIT'E

       POSIX.1-2001,  SVr4,  BSD 4.4  (cet  appel  est  apparu  dans BSD 4.2).
       POSIX.1-2008 marque getitimer() et setitimer() comme  etant  obsoletes,
       en  recommandant  d'utiliser  a la place l'API des temporisations POSIX
       (timer_gettime(2), timer_settime(2), etc.).

NOTES

       Un fils cree avec fork(2) n'herite pas des  temporisations  periodiques
       de  son pere. Les temporisations periodiques sont conservees au travers
       d'un execve(2).

       POSIX.1 laisse indeterminees les actions entre setitimer() et les trois
       interfaces alarm(2), sleep(3) et usleep(3).

BOGUES

       Sous  Linux,  l'emission et la reception d'un signal sont distincts, et
       un meme signal ne peut pas etre emis deux fois de suite si  le  premier
       n'a pas ete recu. Il est ainsi possible qu'avec une charge systeme tres
       elevee, une temporisation ITIMER_REAL expire avant que le signal  d'une
       expiration  precedente  n'ait  ete  recu.  Le  second signal sera alors
       perdu.

       Sous  les  noyaux  Linux  anterieurs  au  2.6.16,   les   valeurs   des
       temporisations  sont  exprimees  en << jiffies >>. Si une temporisation
       est  initialisee  a  une  valeur  en  jiffies  depassant  la  constante
       MAX_SEC_IN_JIFFIES    (definie    dans   include/linux/jiffies.h),   la
       temporisation est silencieusement tronquee  a  cette  valeur  maximale.
       Sous  Linux  sur i386 (ou, depuis Linux 2.6.13, un jiffy correspond par
       defaut a 4 millisecondes), cela signifie que la valeur  maximale  d'une
       temporisation  est  environ  99,42 jours. Depuis Linux 2.6.16, le noyau
       utilise une representation interne du temps differente  et  le  plafond
       est supprime.

       Sur  certains  systemes  (y  compris  i386),  les noyaux Linux avant la
       version 2.6.12 ont un bogue qui cause des  expirations  prematurees  de
       temporisation,  avec  une  avance  pouvant  aller jusqu'a un jiffy dans
       certaines circonstances. Ce bogue est corrige dans Linux 2.6.12.

       Selon POSIX.1-2001, setitimer() devrait echouer si la valeur de tv_usec
       fournie  n'est  pas  entre  0  et 999999. Cependant, dans les noyaux de
       version inferieure ou egale a 2.6.21, Linux ne renvoie pas d'erreur, et
       se  contente  d'ajuster  la  valeur de tv_sec correspondante. Depuis le
       noyau 2.6.22, cette non conformite a  ete  corrigee ;  une  valeur  non
       valable de tv_usec resulte en une erreur EINVAL.

VOIR AUSSI

       gettimeofday(2),      sigaction(2),     signal(2),     timer_create(2),
       timerfd_create(2), time(7)

COLOPHON

       Cette page fait partie de  la  publication  3.27  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      etre       trouvees       a       l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis  2010,  cette  traduction est maintenue a l'aide de l'outil po4a
       <URL:http://po4a.alioth.debian.org/>   par   l'equipe   de   traduction
       francophone        au        sein        du       projet       perkamon
       <URL:http://perkamon.alioth.debian.org/>.

       Christophe Blaess  <URL:http://www.blaess.fr/christophe/>  (1996-2003),
       Alain   Portal  <URL:http://manpagesfr.free.fr/>  (2003-2006).   Julien
       Cristau et l'equipe francophone de traduction de Debian (2006-2009).

       Veuillez  signaler  toute  erreur   de   traduction   en   ecrivant   a
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous pouvez toujours avoir acces a la version anglaise de  ce  document
       en utilisant la commande << man -L C <section> <page_de_man> >>.