Provided by: manpages-fr-dev_3.32d0.2p4-1_all bug

NOM

       getitimer, setitimer - Lire/écrire 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   système   fournit  pour  chaque  processus  trois  temporisations,  chacune  avec  un
       fonctionnement particulier. Lorsqu'une temporisation  expire,  un  signal  est  envoyé  au
       processus et la temporisation redémarre éventuellement.

       ITIMER_REAL    décroît  en  temps  réel  et  un  signal SIGALRM est émis à l'expiration du
                      délai.

       ITIMER_VIRTUAL décroît uniquement quand le processus s'exécute, et un signal SIGVTALRM est
                      émis à l'expiration du délai.

       ITIMER_PROF    décroît  à  la  fois  quand  le processus s'exécute, et quand le processeur
                      exécute  des  fonctions  systèmes  à  la  demande   du   processus.   Cette
                      temporisation, utilisée conjointement avec ITIMER_VIRTUAL, est généralement
                      utilisée  pour  obtenir  le  profil  d'exécution  du  processus  entre  les
                      fonctionnalités utilisateur et le noyau. SIGPROF est émis à l'expiration du
                      délai.

       Les valeurs des temporisations sont définies 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 pointée par curr_value avec le  paramétrage
       de la temporisation indiqué par which (parmi ITIMER_REAL, ITIMER_VIRTUAL, ou ITIMER_PROF).
       L'élément it_value est rempli avec le délai restant dans la temporisation, ou zéro  si  la
       temporisation est désactivée. De même, 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 paramètres précédents de la temporisation y sont inscrits.

       Les  temporisations  décroissent  de  it_value  à  zéro,  déclenchent  un  signal, et sont
       replacées à it_interval. Une temporisation s'arrête si elle est mise à zéro (it_value vaut
       zéro) ou bien elle expire et it_interval vaut zéro.

       Les  deux  champs  tv_sec  et  tv_usec  sont  utilisés  pour  déterminer  la  durée  d'une
       temporisation.

       Les temporisations n'expirent jamais avant la fin du temps requis, et expirent plutôt avec
       un  court  délai  après  la  limite.  Ce délai dépend de la résolution de la temporisation
       système et de la charge du système ; consultez time(7) (mais consultez la  section  BOGUES
       ci‐dessous).  À l'expiration, un signal est déclenché puis la temporisation réinitialisée.
       Si la  temporisation  expire  alors  que  le  processus  est  actif  (toujours  vrai  avec
       ITIMER_VIRTUAL)  le signal sera délivré immédiatement. Autrement, il y aura un petit délai
       avant réception du signal, dépendant de la charge du système.

VALEUR RENVOYÉE

       S'il réussit, cet appel système renvoie 0. S'il échoue, il renvoie -1 et remplit errno  en
       conséquence.

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  pointée  par  new_value
              contient une valeur hors de l'intervalle 0 à 999 999.

CONFORMITÉ

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

NOTES

       Un  fils  créé  avec  fork(2) n'hérite pas des temporisations périodiques de son père. Les
       temporisations périodiques sont conservées au travers d'un execve(2).

       POSIX.1 laisse indéterminées  les  actions  entre  setitimer()  et  les  trois  interfaces
       alarm(2), sleep(3) et usleep(3).

BOGUES

       Sous  Linux,  l'émission  et la réception d'un signal sont distincts, et un même signal ne
       peut pas être émis deux fois de suite si le  premier  n'a  pas  été  reçu.  Il  est  ainsi
       possible  qu'avec  une  charge  système  très élevée, une temporisation ITIMER_REAL expire
       avant que le signal d'une expiration précédente n'ait été  reçu.  Le  second  signal  sera
       alors perdu.

       Sous  les noyaux Linux antérieurs au 2.6.16, les valeurs des temporisations sont exprimées
       en « jiffies ». Si une temporisation est initialisée à une valeur en jiffies dépassant  la
       constante  MAX_SEC_IN_JIFFIES (définie dans include/linux/jiffies.h), la temporisation est
       silencieusement tronquée à  cette  valeur  maximale.  Sous  Linux  sur  i386  (où,  depuis
       Linux 2.6.13,  un  jiffy  correspond  par  défaut à 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 représentation interne du temps différente et le plafond est supprimé.

       Sur  certains  systèmes  (y compris i386), les noyaux Linux avant la version 2.6.12 ont un
       bogue qui cause des expirations prématurées de  temporisation,  avec  une  avance  pouvant
       aller  jusqu'à  un  jiffy  dans  certaines  circonstances. Ce bogue est corrigé dans Linux
       2.6.12.

       Selon POSIX.1-2001, setitimer() devrait échouer si la valeur de tv_usec fournie n'est  pas
       entre  0  et  999999.  Cependant, dans les noyaux de version inférieure ou égale à 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 conformité a été corrigée ; une valeur
       non valable de tv_usec résulte 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.32 du projet man-pages Linux.  Une  description
       du  projet  et  des  instructions  pour  signaler  des  anomalies  peuvent être trouvées à
       l'adresse <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis   2010,   cette   traduction   est   maintenue   à   l'aide   de    l'outil    po4a
       <URL:http://po4a.alioth.debian.org/>  par  l'équipe  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'équipe francophone de
       traduction de Debian (2006-2009).

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

       Vous pouvez toujours avoir accès à la version anglaise de  ce  document  en  utilisant  la
       commande « man -L C <section> <page_de_man> ».