Provided by: manpages-ro-dev_4.27.0-1_all bug

NUME

       clock_nanosleep - repaus(somn) de înaltă rezoluție cu ceas specificabil

BIBLIOTECA

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

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

SINOPSIS

       #include <time.h>

       int clock_nanosleep(clockid_t clockid, int flags,
                           const struct timespec *t,
                           struct timespec *_Nullable remain);

   Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)):

       clock_nanosleep():
           _POSIX_C_SOURCE >= 200112L

DESCRIERE

       Ca  și nanosleep(2), clock_nanosleep() permite firului apelant să doarmă pentru un interval specificat cu
       precizie de nanosecunde. Acesta diferă prin faptul că permite apelantului să selecteze ceasul  în  raport
       cu  care  urmează  să  fie  măsurat  intervalul  de  somn  și  prin faptul că intervalul de somn poate fi
       specificat ca valoare absolută sau relativă.

       Valorile de timp transmise și returnate de acest apel sunt specificate folosind structurile timespec(3).

       Argumentul clockid specifică ceasul în raport cu care urmează să fie măsurat intervalul  de  somn.  Acest
       argument poate avea una dintre următoarele valori:

       CLOCK_REALTIME
              Un ceas în timp real reglabil la nivelul întregului sistem.

       CLOCK_TAI (începând cu Linux 3.10)
              Un ceas la nivel de sistem derivat din ceasul etalon, dar care numără secundele bisecte.

       CLOCK_MONOTONIC
              Un  ceas neconfigurabil, cu creștere monotonă, care măsoară timpul de la un moment nespecificat în
              trecut și care nu se modifică după pornirea sistemului.

       CLOCK_BOOTTIME (începând cu Linux 2.6.39)
              Identic cu CLOCK_MONOTONIC, cu excepția faptului că  include  și  timpul  în  care  sistemul  este
              suspendat.

       CLOCK_PROCESS_CPUTIME_ID
              Un ceas configurabil per proces care măsoară timpul CPU consumat de toate firele din proces.

       Consultați  clock_getres(2)  pentru  detalii  suplimentare  privind  aceste  ceasuri.  În  plus, ID-urile
       ceasurilor CPU returnate de clock_getcpuclockid(3) și pthread_getcpuclockid(3) pot  fi  transmise  și  în
       clockid.

       Dacă  flags este 0, atunci valoarea specificată în t este interpretată ca un interval relativ la valoarea
       curentă a ceasului specificat de clockid.

       Dacă flags este TIMER_ABSTIME, atunci t este interpretat ca un timp absolut  măsurat  de  ceas,  clockid.
       Dacă t este mai mic sau egal cu valoarea curentă a ceasului, atunci clock_nanosleep() revine imediat fără
       a suspenda firul apelant.

       clock_nanosleep()  suspendă  execuția firului de execuție apelant până când fie a trecut cel puțin timpul
       specificat de t, fie este transmis un semnal  care  determină  apelarea  unui  gestionar  de  semnal  sau
       terminarea procesului.

       Dacă  apelul  este  întrerupt  de  un gestionar de semnal, clock_nanosleep() eșuează cu eroarea EINTR. În
       plus, dacă remain nu este NULL, iar flags nu a fost TIMER_ABSTIME, se returnează timpul rămas nedormit în
       remain.  Această valoare poate fi apoi utilizată pentru a apela din nou clock_nanosleep() și  a  finaliza
       un somn (relativ).

VALOAREA RETURNATĂ

       După  ce a reușit să doarmă pentru intervalul solicitat, clock_nanosleep() returnează 0. Dacă apelul este
       întrerupt de un gestionar de semnal sau detectează o eroare, atunci returnează unul  dintre  numerele  de
       eroare pozitive enumerate în ERORI-IEȘIRE.

ERORI-IEȘIRE

       EFAULT t sau remain a specificat o adresă nevalidă.

       EINTR  Somnul a fost întrerupt de un gestionar de semnal; a se vedea signal(7).

       EINVAL Valoarea din câmpul tv_nsec nu era cuprinsă în intervalul [0, 999999999] sau tv_sec era negativă.

       EINVAL clockid nu a fost valid.  CLOCK_THREAD_CPUTIME_ID nu este o valoare permisă pentru clockid.

       ENOTSUP
              Nucleul nu oferă suport pentru dormitul în raport cu acest clockid.

STANDARDE

       POSIX.1-2008.

ISTORIC

       POSIX.1-2001.  Linux 2.6, glibc 2.1.

NOTE

       Dacă intervalul specificat în t nu este un multiplu exact al gradului de finețe care stă la baza ceasului
       (a  se  vedea time(7)), atunci intervalul va fi rotunjit la următorul multiplu. În plus, după finalizarea
       somnului, poate exista încă o întârziere până când CPU devine liber să execute din nou firul apelant.

       Utilizarea  unui  temporizator  absolut  este  utilă  pentru   prevenirea   problemelor   de   derivă   a
       temporizatorului  de  tipul  celor  descrise  în  nanosleep(2).  Astfel  de  probleme  sunt exacerbate în
       programele care încearcă să repornească un somn relativ care este întrerupt în mod  repetat  de  semnale.
       Pentru  a  efectua  un  somn  relativ  care evită aceste probleme, apelați clock_gettime(2) pentru ceasul
       dorit, adăugați intervalul dorit la valoarea de timp  returnată  și  apoi  apelați  clock_nanosleep()  cu
       fanionul TIMER_ABSTIME.

       clock_nanosleep()  nu  este  niciodată  repornit  după  ce  a  fost  întrerupt de un gestionar de semnal,
       indiferent de utilizarea fanionului sigaction(2) SA_RESTART.

       Argumentul remain este neutilizat și inutil atunci când flags este TIMER_ABSTIME; (un somn absolut  poate
       fi repornit folosind același argument t).

       POSIX.1  specifică  faptul că clock_nanosleep() nu are niciun efect asupra dispozițiilor semnalelor sau a
       măștii de semnal.

       POSIX.1 specifică faptul că, după modificarea valorii ceasului CLOCK_REALTIME prin clock_settime(2), noua
       valoare a ceasului este utilizată pentru a determina momentul la care se va  trezi  un  fir  de  execuție
       blocat  pe  un  apel  absolut  clock_nanosleep();  dacă  noua  valoare  a  ceasului  depășește  sfârșitul
       intervalului de somn, apelul clock_nanosleep() va reveni imediat.

       POSIX.1 specifică faptul că modificarea valorii ceasului  CLOCK_REALTIME  prin  clock_settime(2)  nu  are
       niciun efect asupra unui fir care este blocat pe un clock_nanosleep() relativ.

CONSULTAȚI ȘI

       clock_getres(2),  nanosleep(2),  restart_syscall(2),  timer_create(2),  sleep(3), timespec(3), usleep(3),
       time(7)

TRADUCERE

       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.

Pagini de manual de Linux 6.9.1                    2 mai 2024                                 clock_nanosleep(2)