gettimeofday(2) System Calls Manual gettimeofday(2) NUME gettimeofday, settimeofday - obine / regleaza ora BIBLIOTECA Biblioteca C standard (libc, -lc) SINOPSIS #include int gettimeofday(struct timeval *restrict tv, struct timezone *_Nullable restrict tz); int settimeofday(const struct timeval *tv, const struct timezone *_Nullable tz); Cerine pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultai feature_test_macros(7)): settimeofday(): Incepand cu glibc 2.19: _DEFAULT_SOURCE glibc 2.19 i versiunile anterioare: _BSD_SOURCE DESCRIERE Funciile gettimeofday() i settimeofday() pot obine i regla ora, precum i un fus orar. Argumentul tv este o structura struct timeval (dupa cum se specifica in ): struct timeval { time_t tv_sec; /* secunde */ suseconds_t tv_usec; /* microsecunde */ }; i ofera numarul de secunde i microsecunde de la Epoca (a se vedea time(2)). Argumentul tz este o structura struct timezone: struct timezone { int tz_minuteswest; /* minute la vest de Greenwich */ int tz_dsttime; /* tipul de corecie a orei de vara */ }; Daca tv sau tz este NULL, structura corespunzatoare nu este definita sau returnata; (cu toate acestea, vor aparea avertismente de compilare daca tv este NULL). Utilizarea structurii timezone este invechita; argumentul tz ar trebui in mod normal sa fie specificat ca NULL. A se vedea seciunea VERSIUNI. In Linux, exista o semantica ciudata de ,,ceas de deformare" asociata cu apelul de sistem settimeofday() daca la primul apel (dupa pornire) care are un argument tz non-NULL, argumentul tv este NULL i campul tz_minuteswest este diferit de zero; (campul tz_dsttime ar trebui sa fie zero pentru acest caz). Intr-un astfel de caz, se presupune ca ceasul CMOS este la ora locala i ca trebuie sa fie incrementat cu aceasta valoare pentru a obine ora sistemului UTC. Fara indoiala, este o idee proasta sa folosii aceasta caracteristica. VALOAREA RETURNATA gettimeofday() i settimeofday() returneaza 0 pentru succes. In caz de eroare, se returneaza -1, iar errno este configurata pentru a indica eroarea. ERORI-IEIRE EFAULT Unul dintre argumente tv sau tz a indicat in afara spaiului de adrese accesibil. EINVAL (settimeofday()): timezone nu este valid. EINVAL (settimeofday()): tv.tv_sec este negativ sau tv.tv_usec este in afara intervalului [0, 999,999]. EINVAL (incepand cu Linux 4.3) (settimeofday()): S-a incercat reglarea orei la o valoare mai mica decat valoarea curenta a ceasului CLOCK_MONOTONIC (consultai clock_gettime(2)). EPERM Procesul apelant nu are privilegii suficiente pentru a apela settimeofday(); sub Linux este necesara capacitatea CAP_SYS_TIME. VERSIUNI Diferene intre biblioteca C i nucleu Pe unele arhitecturi, o implementare a gettimeofday() este furnizata in vdso(7). Nucleul accepta NULL atat pentru tv, cat i pentru tz. Argumentul fusului orar este ignorat de glibc i musl i nu este transmis catre/de la nucleu. Android bionic transmite argumentul fusului orar catre/de la nucleu, dar Android nu actualizeaza fusul orar al nucleului pe baza fusului orar al dispozitivului din Configurari, astfel incat fusul orar al nucleului este de obicei UTC. STANDARDE gettimeofday() POSIX.1-2008 (obsolet). settimeofday() Niciunul. ISTORIC SVr4, 4.3BSD. POSIX.1-2001 descrie gettimeofday(), dar nu i settimeofday(). POSIX.1-2008 marcheaza gettimeofday() ca fiind depait, recomandand utilizarea in schimb a clock_gettime(2). In mod tradiional, campurile din struct timeval erau de tip long. Campul tz_dsttime Pe un nucleu non-Linux, cu glibc, campul tz_dsttime din struct timezone va fi stabilit la o valoare diferita de zero de catre gettimeofday() daca fusului orar curent i s-a aplicat sau i se va aplica vreodata o regula de schimbare a orei de vara. In acest sens, aceasta reflecta exact semnificaia lui daylight(3) pentru fusul curent. Pe Linux, cu glibc, stabilirea campului tz_dsttime din struct timezone nu a fost niciodata utilizata de settimeofday() sau gettimeofday(). Prin urmare, cele ce urmeaza sunt pur de interes istoric. Pe sistemele vechi, campul tz_dsttime conine o constanta simbolica (valorile sunt date mai jos) care indica in ce parte a anului este in vigoare ora de vara. Nota: aceasta valoare este constanta pe tot parcursul anului: ea nu indica faptul ca DST (ora de vara) este in vigoare, ci doar selecteaza un algoritm. Algoritmii pentru ora de vara definii sunt urmatorii: DST_NONE /* nu la ora de vara */ DST_USA /* ora de vara in stil SUA */ DST_AUST /* ora de vara in stil australian */ DST_WET /* ora de vara in stil Europa de vest */ DST_MET /* ora de vara in stil Europa de vest */ DST_EET /* ora de vara in stil Europa centrala */ DST_CAN /* Canada */ DST_GB /* Marea Britaie i Irlanda */ DST_RUM /* Romania */ DST_TUR /* Turcia */ DST_AUSTALT /* Stil australian cu schimbare in 1986 */ Desigur, s-a dovedit ca perioada in care este in vigoare ora de vara nu poate fi data de un algoritm simplu, unul pentru fiecare ara; intr-adevar, aceasta perioada este determinata de decizii politice imprevizibile. Prin urmare, aceasta metoda de reprezentare a fusurilor orare a fost abandonata. NOTE Ora returnata de gettimeofday() este afectata de salturi discontinue in ora sistemului (de exemplu, daca administratorul sistemului modifica manual ora sistemului). Daca avei nevoie de un ceas care crete monoton, consultai clock_gettime(2). Macrocomenzile pentru operarea structurilor timeval sunt descrise in timeradd(3). CONSULTAI I date(1), adjtimex(2), clock_gettime(2), time(2), ctime(3), ftime(3), timeradd(3), capabilities(7), time(7), vdso(7), hwclock(8) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.12 23 iulie 2024 gettimeofday(2)