gettimeofday(2)

NAAM
gettimeofday, settimeofday - verkrijg / zet tijd

BIBLIOTHEEK
Standard C bibliotheek (libc, -lc)

SAMENVATTING
#include <sys/time.h>

int gettimeofday(struct timeval *restrict tv,
                 struct timezone *restrict tz);
int settimeofday(const struct timeval *tv,
                 const struct timezone *_NULL_baartz);

    Feature Test Macro´s eisen in glibc (zie feature_test_macros(7)):

settimeofday()
    Vanaf glibc 2.19:
        _DEFAULT_SOURCE
    Glibc 2.19 en eerder:
        _BSD_SOURCE

BESCHRIJVING
De functies gettimeofday() en settimeofday() kunnen zowel de tijd als de tijdzone zetten en inspecteren.

Het tv argument is een timeval "struct" zoals bepaald in <sys/time.h>):

    struct timeval {
        time_t      tv_sec;     /* seconden */
        suseconds_t tv_usec;    /* microseconden */
    };

en geeft het aantal seconden en microseconden sinds de Epoch (zie time(2)).

Het tz argument is een struct tijdzone:

    struct timezone {
        int tz_minuteswest;     /* minuten west van Greenwich */
        int tz_dsttime;         /* type zomertijd (dst) correctie */
    };

Als óf tv óf tz NULL is, dan wordt de corresponderende structure niet gezet of teruggegeven. (Echter, compilatie waarschuwingen zullen optreden als tv NULL is.)

Het gebruik van de tijdzone structuur is verouderd; het tz argument moet normaliter opgegeven worden als NULL. (Zie VERSIES hieronder.)

Onder Linux is er een eigenaardige `warp clock' semantiek geassocieerd met de settimeofday() systeem aanroep als tijdens de allereerste aanroep (na opstarten van het systeem) die een niet-NULL tz argument heeft, het tv argument NULL is en het tz_minuteswest niet-nul is. (Het tz_dsttime veld moet nul zijn in dit geval.) In zo'n geval wordt aangenomen dat de CMOS klok op lokale tijd staat, en dat daar deze hoeveelheid bij moet worden opgeteld om de UTC systeem tijd te krijgen. Ongetwijfeld is het een slecht idee dit te gebruiken.

EIND WAARDE
gettimeofday() en settimeofday() retourneren 0 bij succes, of -1 voor falen (in welk geval errno op die manier wordt gezet).

FOUTEN

EFAULT
    Een van tv of tz wijst buiten uw toegankelijke adres ruimte.

EINVAL
    (settimeofday()): timezone is ongeldig.

EINVAL
    (settimeofday()): tv.tv_sec is negatief of tv.tv_usec is buiten het bereik [0..999,999].

EINVAL (sinds Linux 4.3)
    (settimeofday()): Een poging werd ondernomen om de tijd op een waarde in te stellen die eerder is dan de huidige waarde van de CLOCK_MONOTONIC klok (zie clock_gettime(2)).

EPERM
    Het huidige proces heeft onvoldoende rechten om settimeofday() aan te roepen; onder Linux is de CAP_SYS_TIME capaciteit vereist.

VERSIES

  C library/kernel verschillen
Op sommige architecturen wordt voorzien in een implementatie van gettimeofday() in de vdso(7).

De kernel accepteert NULL voor zowel tv and tz. Het tijdzone argument wordt genegeerd door glibc en musl, en niet doorgegeven naar/van de kernel. De bionic van Android geeft het tijdzone argument naar/van de kernel door, maar Android past het tijdzone in de kernel niet aan op basis van de tijdzone van het apparaat in Instellingen, daarom is de tijdzone van de kernel typisch UTC.

VOLDOET AAN

gettimeofday()
    POSIX.1-2008 (verouderd).

settimeofday()
    Geen.

GESCHIEDENIS
SVr4, 4.3BSD. POSIX.1-2001 beschrijven gettimeofday() maar niet settimeofday(). POSIX.1-2008 markeert gettimeofday() als verouderd, en beveelt het gebruik van clock_gettime(2) in plaats daarvan aan.

Traditioneel waren de velden van struct timeval van het type long.

  Het tz_dsttime veld
In een niet-Linux kernel, met glibc, wordt het tz_dsttime veld van struct timezone gezet op een niet-nul waarde door gettimeofday() als op de huidige tijdzone een regel ooit toegepast is of ooit zal worden. Op deze manier spiegelt het precies de betekenis van daylight(3) voor de huidige zone. Op Linux, met glibc, is de instelling van het tz_dsttime veld van struct timezone nooit gebruikt door settimeofday() of gettimeofday(). Daarom is het volgende puur uit historische interesse.

Op oude systemen bevat het tz_dsttime veld een symbolische constante (waarden staan hieronder) dat aangeeft in welk deel van het jaar zomertijd van kracht is. (Let op: deze waarde is constant gedurende het jaar: het geeft niet aan dat de zomertijd van kracht is, het selecteert een algoritme.) De zomertijd algoritmes zijn als volgt gedefinieerd:

    DST_NONE     /* not on DST */
    DST_USA      /* USA style DST */
    DST_AUST     /* Australian style DST */
    DST_WET      /* Western European DST */
    DST_MET      /* Middle European DST */
    DST_EET      /* Eastern European DST */
    DST_CAN      /* Canada */
    DST_GB       /* Great Britain and Eire */
    DST_RUM      /* Romania */
    DST_TUR      /* Turkey */
    DST_AUSTALT  /* Australian style with shift in 1986 */

Natuurlijk bleek dat de periode waarin zomertijd geld niet met een eenvoudig algorithme per land bepaald kan worden. Inderdaad: deze periode wordt bepaald door onvoorspelbare politieke beslissingen. Daarom is deze methode van tijdzone representatie afgeschaft.

OPMERKINGEN
De tijd teruggegeven door gettimeofday() wordt beïnvloed door niet continue sprongen in de systeem tijd (b.v. als de systeem beheerder handmatig de systeem tijd verandert). Als u een monotoon oplopende klok nodig heeft, zie dan clock_gettime(2).

Macros voor het gebruik van timeval structuren zijn beschreven in timeradd(3).

ZIE OOK
date(1), adjtimex(2), clock_gettime(2), time(2), ctime(3), ftime(3), timeradd(3), capabilities(7), time(7), vdso(7), hwclock(8)

VERTALING
De Nederlandse vertaling van deze handleiding is geschreven door Jos Boersema <joshb@xs4all.nl>, Joost van Baal <joostv-manpages-nl-2398@mdcc.cx>, Mario Blättermann <mario.blaettermann@gmail.com> en Luc Castermans <luc.castermans@gmail.com>

Deze vertaling is vrije documentatie; lees de GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html) of later over de Copyright-voorwaarden. Er is geen AANSPRAKELIJKHEID.

Indien U fouten in de vertaling van deze handleiding zou vinden, stuur een e-mail naar debian-l10n-dutch@lists.debian.org.