clock_getcpuclockid(3) Library Functions Manual clock_getcpuclockid(3)

clock_getcpuclockid - obține ID-ul ceasului de timp CPU al unui proces

Biblioteca C standard (libc, -lc), începând de la glibc 2.17

Înainte de glibc 2.17, biblioteca în timp real (librt, -lrt)

#include <time.h>

int clock_getcpuclockid(pid_t pid, clockid_t *clockid);
Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)):

clock_getcpuclockid():

    _POSIX_C_SOURCE >= 200112L

Funcția clock_getcpuclockid() obține ID-ul ceasului de timp CPU al procesului al cărui ID este pid și îl returnează în locația indicată de clockid. Dacă pid este zero, atunci se returnează ID-ul ceasului de timp CPU al procesului care face apelul.

În caz de succes, clock_getcpuclockid() returnează 0; în caz de eroare, returnează unul dintre numerele de eroare pozitive enumerate în ERORI.

Nucleul nu permite obținerea ceasului de timp CPU per proces al unui alt proces, iar pid nu specifică procesul apelant.
Apelantul nu are permisiunea de a accesa ceasul de timp CPU al procesului specificat de pid; (specificată în POSIX.1-2001; nu apare în Linux, cu excepția cazului în care nucleul nu permite obținerea ceasului de timp CPU per proces al unui alt proces).
Nu există niciun proces cu ID-ul pid.

Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).

Interfață Atribut Valoare
clock_getcpuclockid() Siguranța firelor MT-Safe

POSIX.1-2008.

glibc 2.2. POSIX.1-2001.

Apelarea clock_gettime(2) cu ID-ul ceasului obținut printr-un apel la clock_getcpuclockid() cu un pid de 0, este același lucru cu utilizarea ID-ului ceasului CLOCK_PROCESS_CPUTIME_ID.

Programul de exemplu de mai jos obține ID-ul ceasului de timp CPU al procesului al cărui ID este dat în linia de comandă și apoi utilizează clock_gettime(2) pentru a obține ora de pe acel ceas. Un exemplu de execuție este următorul:


$ ./a.out 1                 # Afișează ceasul CPU al procesului init
CPU-time clock for PID 1 is 2.213466748 seconds

#define _XOPEN_SOURCE 600
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
int
main(int argc, char *argv[])
{
    clockid_t clockid;
    struct timespec ts;
    if (argc != 2) {
        fprintf(stderr, "%s <process-ID>\n", argv[0]);
        exit(EXIT_FAILURE);
    }
    if (clock_getcpuclockid(atoi(argv[1]), &clockid) != 0) {
        perror("clock_getcpuclockid");
        exit(EXIT_FAILURE);
    }
    if (clock_gettime(clockid, &ts) == -1) {
        perror("clock_gettime");
        exit(EXIT_FAILURE);
    }
    printf("Ceasul de timp CPU pentru PID %s este de %jd.%09ld secunde\n",
           argv[1], (intmax_t) ts.tv_sec, ts.tv_nsec);
    exit(EXIT_SUCCESS);
}

clock_getres(2), timer_create(2), pthread_getcpuclockid(3), time(7)

Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.

31 octombrie 2023 Pagini de manual de Linux 6.06