NOM
times - Obtenir les statistiques temporelles du processus
SYNOPSIS
#include <sys/times.h>
clock_t times(struct tms *buf);
La fonction times() stocke les durées statistiques du processus en
cours dans la structure struct tms pointée par buf. La structure struct
tms est définie ainsi dans <sys/times.h> :
struct tms {
clock_t tms_utime; /* durée utilisateur */
clock_t tms_stime; /* durée système */
clock_t tms_cutime; /* durée utilisateur des fils */
clock_t tms_cstime; /* durée système des fils */
Le champ tms_utime contient le temps CPU écoulé en exécutant les
instructions du processus appelant. Le champ tms_stime contient le
temps CPU passé dans les fonctions système exécutées pour le compte du
processus appelant. Le champ tms_cutime contient la somme des valeurs
de tms_utime et tms_cutime pour tous les processus fils terminés ayant
été attendus. Le champ tms_cstime contient la somme des valeurs de
tms_stime et tms_cstime pour tous les processus fils terminés ayant été
attendus.
Les durées des processus fils terminés (et de leurs descendants) sont
ajoutées au moment où wait(2) ou waitpid(2) renvoient leur numéro de
PID. En particulier, les durées des petits-fils que le fils n’a pas
attendu ne sont jamais vues.
Toutes les durées sont exprimées en tops d’horloge.
VALEUR RENVOYÉE
times() renvoie le nombre de tops d’horloge écoulés depuis un instant
arbitraire dans le passé. Cette valeur peut déborder de l’intervalle
contenu dans un clock_t. En cas d’erreur (clock_t) -1 est renvoyé et
errno contient le code d’erreur.
CONFORMITÉ
SVr4, BSD 4.3, POSIX.1-2001.
NOTES
Le nombre de tops d’horloge par seconde peut être obtenu en utilisant :
sysconf(_SC_CLK_TCK);
Dans POSIX.1-1996, le symbole CLK_TCK (défini dans <time.h>) est
indiqué en voie d’obsolescence. Il est désormais obsolète.
Sous les noyaux Linux antérieurs à 2.6.9, si le traitement de SIGCHLD
est configuré avec SIG_IGN alors les durées des enfants terminés sont
automatiquement incluses dans les champs tms_cstime et tms_cutime, bien
que POSIX.1-2001 précise que ceci ne doit se produire que si le
processus appelant a fait un wait(2) pour ses enfants. Cette non
conformité est corrigée depuis Linux 2.6.9.
Sous Linux, l’argument buf peut être NULL, auquel cas times() renvoie
simplement son résultat. Cependant, ce comportement n’est pas spécifié
par POSIX, et la plupart des implémentations requièrent une valeur non
NULL de buf.
Notez que clock(3) renvoie aussi des valeurs de type clock_t, mais
cette valeur est mesurée en unités de CLOCKS_PER_SEC, pas en tops
d’horloge utilisés par times().
Sous Linux, « l’instant arbitraire dans le passé » à partir duquel la
valeur renvoyée par times() est mesuré a varié suivant les versions du
noyau. Sous Linux 2.4 et précédents, il s’agit du démarrage du système.
Depuis Linux 2.6, cet instant est (2^32/HZ) - 300 (c’est-à-dire, à peu
près 429 millions) secondes avant le démarrage du système. Cette
variabilité à travers les versions du noyau (et à travers les
implémentations Unix) combinée avec le fait que la valeur renvoyée peut
déborder de la plage de clock_t, signifie que les applications
portables seraient avisées de ne pas utiliser cette valeur. Pour
mesurer les modifications d’un temps écoulé, utilisez plutôt
gettimeofday(2).
Historique
SVr1-3 renvoie un long et les membres de la structure sont de type
time_t bien qu’ils stockent des tops d’horloge et pas des secondes
depuis le 1er janvier 1970. V7 utilisait des long pour les membres des
structures, car il n’avait pas encore de type time_t.
BOGUES
Une limitation des conventions d’appel système Linux sur certaines
architectures (notamment i386) fait que sous linux 2.6, il y a une
petite fenêtre de temps (41 secondes) après le démarrage où times()
peut retourner -1, indiquant à tort qu’une erreur est apparue. Le même
problème peut survenir lorsque les enveloppes de valeurs renvoyées ont
passé la valeur maximum qui puisse être stockée dans clockid_t.
VOIR AUSSI
time(1), getrusage(2), wait(2), clock(3), sysconf(3), time(7)
COLOPHON
Cette page fait partie de la publication 3.23 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent être trouvées à l’adresse
http://www.kernel.org/doc/man-pages/.
TRADUCTION
Cette page de manuel a été traduite et mise à jour par Christophe
Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
disposition sur http://manpagesfr.free.fr/.
Les mises à jour et corrections de la version présente dans Debian sont
directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
francophone de traduction de Debian.
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> ».