.\" -*- coding: UTF-8 -*- .\" Copyright 1993, Darren Senn .\" Copyright 2016, Michael Kerrisk .\" Copyright, the authors of the Linux man-pages project .\" .\" %%%LICENSE_START(FREELY_REDISTRIBUTABLE) .\" May be freely distributed and modified .\" %%%LICENSE_END .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH getitimer 2 "8 februarie 2026" "Pagini de manual de Linux 6.18" .SH NUME getitimer, setitimer \- obține sau stabilește valoarea unui temporizator de interval .SH BIBLIOTECA Biblioteca C standard (\fIlibc\fP, \fI\-lc\fP) .SH SINOPSIS .nf \fB#include \fP .P \fBint getitimer(int \fP\fIwhich\fP\fB, struct itimerval *\fP\fIcurr_value\fP\fB);\fP \fBint setitimer(int \fP\fIwhich\fP\fB, const struct itimerval *restrict \fP\fInew_value\fP\fB,\fP \fB struct itimerval *_Nullable restrict \fP\fIold_value\fP\fB);\fP .fi .SH DESCRIERE Aceste apeluri de sistem oferă acces la temporizatoare de interval, adică la temporizatoare care expiră inițial la un moment dat în viitor și (opțional) la intervale regulate după aceea. Atunci când un temporizator expiră, se generează un semnal pentru procesul apelant, iar temporizatorul este repus la intervalul specificat (dacă intervalul este diferit de zero). .P Sunt furnizate trei tipuri de temporizatoare \-\- specificate prin intermediul argumentului \fIwhich\fP \-\- fiecare dintre acestea numără în funcție de un ceas diferit și generează un semnal diferit la expirarea temporizatorului: .TP \fBITIMER_REAL\fP Acest temporizator numără în timp real (adică, ceas etalon „wall clock”). La fiecare expirare, se generează un semnal \fBSIGALRM\fP. .TP \fBITIMER_VIRTUAL\fP Acest temporizator numără timpul de procesare consumat de proces în modul utilizator; (măsurarea include timpul CPU consumat de toate firele din proces). La fiecare expirare, se generează un semnal \fBSIGVTALRM\fP. .TP \fBITIMER_PROF\fP Acest temporizator numără timpul total (adică atât cel consumat de utilizator, cât și cel consumat de sistem) de procesare consumat de proces; (măsurarea include timpul CPU consumat de toate firele din proces). La fiecare expirare, se generează un semnal \fBSIGPROF\fP. .IP Împreună cu \fBITIMER_VIRTUAL\fP, acest temporizator poate fi utilizat pentru a trasa profilul timpului de procesare al utilizatorului și al sistemului consumat de proces. .P Un proces are doar unul din fiecare dintre cele trei tipuri de temporizatoare. .P Valorile temporizatoarelor sunt definite de următoarele structuri: .P .in +4n .EX struct itimerval { struct timeval it_interval; /* Intervalul pentru temporizatorul periodic */ struct timeval it_value; /* Timpul până la următoarea expirare */ }; \& struct timeval { time_t tv_sec; /* secunde */ suseconds_t tv_usec; /* microsecunde */ }; .EE .in .\" .SS getitimer() Funcția \fBgetitimer\fP() plasează valoarea curentă a temporizatorului specificat de \fIwhich\fP în memoria tampon indicată de \fIcurr_value\fP. .P Substructura \fIit_value\fP este completată cu cantitatea de timp rămasă până la următoarea expirare a temporizatorului specificat. Această valoare se modifică pe măsură ce cronometrul scade și va fi readusă la \fIit_interval\fP atunci când expiră temporizatorul. Dacă ambele câmpuri din \fIit_value\fP sunt zero, atunci acest temporizator este în prezent dezarmat (inactiv). .P Substructura \fIit_interval\fP este completată cu intervalul de timp. În cazul în care ambele câmpuri din \fIit_interval\fP sunt zero, atunci este vorba de un temporizator „single\-shot” (adică expiră o singură dată). .SS setitimer() Funcția \fBsetitimer\fP() armează sau dezarmează temporizatorul specificat de \fIwhich\fP, prin fixarea temporizatorului la valoarea specificată de \fInew_value\fP. În cazul în care \fIold_value\fP nu este NULL, memoria tampon la care indică este utilizată pentru a returna valoarea anterioară a temporizatorului (adică aceleași informații care sunt returnate de \fBgetitimer\fP()). .P Dacă oricare dintre câmpurile din \fInew_value.it_value\fP este diferit de zero, atunci temporizatorul este armat pentru a expira inițial la ora specificată. Dacă ambele câmpuri din \fInew_value.it_value\fP sunt zero, atunci temporizatorul este dezarmat. .P Câmpul \fInew_value.it_interval\fP specifică noul interval pentru temporizator; dacă ambele subcâmpuri ale acestuia sunt zero, temporizatorul are o singură declanșare „single\-shot”. .SH "VALOAREA RETURNATĂ" În caz de succes, se returnează zero. În caz de eroare, se returnează \-1, iar \fIerrno\fP este configurată pentru a indica eroarea. .SH ERORI\-IEȘIRE .TP \fBEFAULT\fP \fInew_value\fP, \fIold_value\fP sau \fIcurr_value\fP nu este un indicator valid. .TP \fBEINVAL\fP \fIwhich\fP nu este unul dintre \fBITIMER_REAL\fP, \fBITIMER_VIRTUAL\fP sau \fBITIMER_PROF\fP; sau (de la Linux 2.6.22) unul dintre câmpurile \fItv_usec\fP din structura indicată de \fInew_value\fP conține o valoare în afara intervalului [0, 999999]. .SH VERSIUNI Standardele nu spun nimic cu privire la semnificația apelului: .P .in +4n .EX setitimer(which, NULL, &old_value); .EE .in .P Multe sisteme (Solaris, BSD și poate și altele) tratează acest lucru ca fiind echivalent cu: .P .in +4n .EX getitimer(which, &old_value); .EE .in .P În Linux, acest lucru este tratat ca fiind echivalent cu un apel în care câmpurile \fInew_value\fP sunt zero; adică, temporizatorul este dezactivat. \fINu folosiți această caracteristică greșită din Linux\fP: este neportabilă și nefolositoare. .SH STANDARDE Niciunul. .SH ISTORIC 4.2BSD, SVr4, SUSv1, POSIX.1\-2001. POSIX.1\-2008 marchează \fBgetitimer\fP() și \fBsetitimer\fP() ca fiind învechite, recomandând în schimb utilizarea API POSIX timers (\fBtimer_gettime\fP(2), \fBtimer_settime\fP(2), etc.). POSIX.1\-2024 le\-a eliminat. .SH NOTE Temporizatoarele nu vor expira niciodată înainte de ora solicitată, dar pot expira la o anumită perioadă (scurtă) de timp după aceea, care depinde de rezoluția temporizatorului de sistem și de sarcina sistemului; a se vedea \fBtime\fP(7); (dar vedeți însă secțiunea ERORI de mai jos). Dacă temporizatorul expiră în timp ce procesul este activ (întotdeauna adevărat pentru \fBITIMER_VIRTUAL\fP), semnalul va fi livrat imediat ce este generat. .P Un copil creat prin \fBfork\fP(2) nu moștenește temporizatoarele de interval ale părintelui său. Temporizatoarele de interval sunt păstrate în cazul unui \fBexecve\fP(2). .P POSIX.1 lasă nespecificată interacțiunea dintre \fBsetitimer\fP() și cele trei interfețe \fBalarm\fP(2), \fBsleep\fP(3) și \fBusleep\fP(3). .SH ERORI Generarea și transmiterea unui semnal sunt distincte și un singur exemplu pentru fiecare dintre semnalele enumerate mai sus poate fi în așteptare pentru un proces. În cazul unei încărcări foarte mari, un temporizator \fBITIMER_REAL\fP poate expira înainte ca semnalul de la o expirare anterioară să fi fost transmis. În acest caz, al doilea semnal se pierde. .P Înainte de Linux 2.6.16, valorile temporizatoarelor sunt reprezentate în clipe „jiffies”. În cazul în care se face o cerere care definește un temporizator cu o valoare a cărei reprezentare jiffies depășește \fBMAX_SEC_IN_JIFFIES\fP (definit în \fIinclude/linux/jiffies.h\fP), atunci temporizatorul este trunchiat în mod silențios la această valoare plafon. Pe Linux/i386 (unde, începând cu Linux 2.6.13, valoarea implicită a unei clipe „jiffy” este de 0,004 secunde), acest lucru înseamnă că valoarea plafon pentru un temporizator este de aproximativ 99,42 zile. Începând cu Linux 2.6.16, nucleul utilizează o reprezentare internă diferită pentru timpi, iar acest plafon este eliminat. .P .\" 4 Jul 2005: It looks like this bug may remain in Linux 2.4.x. .\" http://lkml.org/lkml/2005/7/1/165 Pe anumite sisteme (inclusiv i386), nucleele Linux anterioare la Linux 2.6.12 au o eroare care, în anumite circumstanțe, va produce expirarea prematură a temporizatorului de până la o clipă „jiffy”. Această eroare este corectată în Linux 2.6.12. .P .\" Bugzilla report 25 Apr 2006: .\" http://bugzilla.kernel.org/show_bug.cgi?id=6443 .\" "setitimer() should reject noncanonical arguments" POSIX.1\-2001 spune că \fBsetitimer\fP() trebuie să eșueze dacă este specificată o valoare \fItv_usec\fP care se află în afara intervalului [0, 999999]. Cu toate acestea, până la Linux 2.6.21 inclusiv, Linux nu dă o eroare, dar în schimb ajustează în tăcere valoarea corespunzătoare în secunde pentru temporizator. Începând cu Linux 2.6.22, această neconformitate a fost reparată: o valoare \fItv_usec\fP necorespunzătoare are ca rezultat o eroare \fBEINVAL\fP. .SH "CONSULTAȚI ȘI" \fBgettimeofday\fP(2), \fBsigaction\fP(2), \fBsignal\fP(2), \fBtimer_create\fP(2), \fBtimerfd_create\fP(2), \fBtime\fP(7) .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .