TIMES(2)

NOM
times - Obtenir les statistiques temporelles du processus

SYNOPSIS
#include <sys/times.h>

clock_t times(struct tms *buf);

DESCRIPTION
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     */

The tms_utime field contains the CPU time spent executing instructions of the calling process. The tms_stime field contains the CPU time spent executing inside the kernel while performing tasks on behalf of the calling process.

The tms_cutime field contains the sum of the tms_utime and tms_cutime values for all waited-for terminated children. The tms_cstime field contains the sum of the tms_stime and tms_cstime values for all waited-for terminated children.

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.

ERREURS

EFAULT
    tms pointe en dehors de l'espace d'adressage du processus.

CONFORMITÉ
POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.

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().

On Linux, the "arbitrary point in the past" from which the return value of times() is measured has varied across kernel versions. On Linux 2.4 and earlier, this point is the moment the system was booted. Since Linux 2.6, this point is (2^32/HZ) - 300 seconds before system boot time. This variability across kernel versions (and across UNIX implementations), combined with the fact that the returned value may overflow the range of clock_t, means that a portable application would be wise to avoid using this value. To measure changes in elapsed time, use clock_gettime(2) instead.

  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 l'époque. 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 clock_t.

VOIR AUSSI
time(1), getrusage(2), wait(2), clock(3), sysconf(3), time(7)

COLOPHON
Cette page fait partie de la publication 5.08 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page, peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

TRADUCTION
La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org> et David Prévot <david@tilapin.org> Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à <debian-l10n-french@lists.debian.org>.