Syntaks
int gettimeofday (struct timeval * tp, struct tidssone * tz)De gettimeofday () funksjon er definert i sys / tid.h topptekstfil.
Argumenter
Denne funksjonen tar to argumenter:
Den 1St argument peker på tidsalder struktur. De tidsalder struktur er erklært som nedenfor i sys / tid.h overskriftsfil:
struct timevaltime_t tv_sec; // brukt i sekunder
suseconds_t tv_usec; // brukes i mikrosekunder
Struct tidsalderstrukturen representerer en kalendertid. Den har to medlemmer:
- tv_sec : Det er antall sekunder siden epoken.
- tv_usec : Det er flere mikrosekunder etter antall sekunder beregning siden epoken ..
2nd argument peker på tidssone struktur. Det bør normalt settes til NULL fordi struct tidssone er foreldet. Dette argumentet er kun for bakoverkompatibilitet.
Returner verdier
På suksess, den gettimeofday () return 0, for feil returnerer funksjonen -1.
Enkel Få tid og skriv ut
#inkludere#inkludere
int main ()
struct tidsstrømstrømstid;
gettimeofday (& nåværende tid, NULL);
printf ("sekunder:% ld \ nmicro sekunder:% ld",
nåværende tid.tv_sec, nåværende tid.tv_usec);
retur 0;
Produksjon:
Her, sys / tid.h er inkludert for gettimeofday () funksjon og tidsstruktur. De gettimeofday () funksjon angi klokkeslettet i timeval (current_time) struktur medlem. tv_sec er det integrerte antall sekunder som har gått siden starten av UNIX-epoke, på midnatt UTC 1. januar 1970 og tv_usec er ekstra antall mikrosekunder som er gått fra tv_sec. Hvis du kjører programmet, bør du se utdataene. Hver gang du kjører programmet vil utgangen endres.
NULL Argumentfeil
#inkludere#inkludere
int main ()
struktur tidsstrøm nåværende tid;
gettimeofday (NULL, NULL);
retur 0;
Produksjon:
I dette eksemplet viser det første argumentet til gettimeofday () funksjonen skal ikke være NULL. Kompilasjonsadvarsel kommer hvis det første argumentet er NULL.
Formatering av gjeldende tid
#inkludere#inkludere
#inkludere
int main ()
struktur tidsalder tv;
time_t t;
struct tm * info;
røyebuffer [64];
gettimeofday (& tv, NULL);
t = tv.tv_sec;
info = lokaltid (& t);
printf ("% s", asctime (info));
strftime (buffer, bufferstørrelse, "I dag er% A,% B% d.\ n ", info);
printf ("% s", buffer);
strftime (buffer, bufferstørrelse, "Tiden er% I:% M% p.\ n ", info);
printf ("% s", buffer);
retur 0;
Produksjon:
I dette eksemplet viser hvordan du skriver ut dato og klokkeslett i forskjellige format. Det er ikke veldig enkelt å representere datoer fra returverdien av gettimeofday () funksjon . Her, lokal tid() og strftime () funksjoner brukes til å pent representere returverdien av gettimeofday ().
De lokal tid() funksjon tar et argument, som er en referanse til en peker på tv_sec innen struct tidsperiode og returnerer en referanse til en peker på a struktur tm gjenstand.
De strftime () -funksjonen vil generere en personlig, formatert streng som viser dato og klokkeslett fra struktur tm pekeren. Formatspesifikatorer brukes til formatert visning. For eksempel spesifiserer formatstrengen “% d-% m-% Y% H:% M:% S” dato og klokkeslett i dette skjemaet:
14-04-2020 13:09:42Følgende er konverteringsspesifikasjonene som kan brukes til formatert visning:
Spesifikator | Betydning |
%en | Det forkortede navnet på ukedagen i henhold til gjeldende sted. |
%EN | Navnet på ukedagen i henhold til gjeldende sted. |
% b | Navnet på den forkortede måneden i henhold til gjeldende sted. |
% B | Navnet på hele måneden i henhold til gjeldende sted. |
% c | Den foretrukne representasjonen av dato og klokkeslett for den nåværende lokaliteten. |
% d | Som et desimaltall for månedens dag (område 01 - 31). |
% H | Bruk 24 timer (område 00 - 23) til timen som desimaltall. |
%JEG | Bruk 12 timer (område 00 - 23) til timen som desimaltall. |
% j | Som et desimaltall for årets dag (område 001-366). |
% m | Som et desimaltall for måneden (område 01 - 12). |
% M | Desimaltallet i minuttet. |
% s | Basert på den angitte tidsverdien, enten 'am' eller 'pm' eller tilsvarende strenger for gjeldende sted. |
% S | Desimaltallet på det andre. |
% x | Foretrukket fremstilling av datoen for gjeldende sted, men uten tid. |
% X | Foretrukket fremstilling av klokkeslettet for gjeldende sted, men uten dato. |
% y | Året er desimal, men ikke noe århundre (fra 00 til 99). |
% Y | Året er desimal inkludert århundre. |
% Z | Tidssonen. |
Bruke gettimeofday for å måle programutførelsestid
#inkludere#inkludere
int main ()
struktur tidsriktig start, slutt;
gettimeofday (& start, NULL);
for (int i = 0; i <1e5 ; i++)
gettimeofday (& slutt, NULL);
printf ("Tiden det tar å telle til 10 ^ 5 er:% ld mikrosekunder \ n",
((slutt.tv_sec * 1000000 + slutt.tv_usec) -
(start.tv_sec * 1000000 + start.tv_usec)));
retur 0;
Produksjon:
Dette eksemplet viser at hvordan gettimeofday () funksjon kan brukes til beregning av utførelsestid for et program.
Konklusjon
På denne måten kan gettimeofday () funksjonen kan brukes i Linux. For å portere eksisterende kode, gettimeofday () funksjonen kan brukes, men i ny kode skal den ikke brukes. clock_gettime () funksjon kan brukes i stedet for gettimeofday ().