Syntaks
intgettimeofday( strukturtid*by, strukturtidssone*tz)De gettimeofday () funksjon er definert i sys/time.h toppfil.
Argumenter
Denne funksjonen tar to argumenter:
Den 1stargumentet peker på tid struktur. De tid strukturen er deklarert som nedenfor i sys/time.h topptekstfil:
strukturtid{
time_t tv_sek; // brukt i sekunder
suseconds_t tv_usec; // brukt i mikrosekunder
}
Tidsstrukturen struct representerer en kalendertid. Den har to medlemmer:
- tv_sec : Det er antall sekunder siden epoken.
- tv_usec : Det er ekstra mikrosekunder etter antall sekunders beregning siden epoken. .
Den 2ndargumentet peker på tidssone struktur. Det bør normalt settes til NULL fordi struct tidssone er foreldet. Dette argumentet er bare for bakoverkompatibilitet.
Returner verdier
På suksess, gettimeofday () return 0, for feil returnerer funksjonen -1.
Enkelt Få tid og utskrift
#inkludere#inkludere
inthoved-() {
strukturtimeval current_time;
gettimeofday(&nåværende tid,NULL);
printf ('sekunder: %ld nmikrosekunder: %ld ',
nåværende tid.tv_sec,nåværende tid.tv_usec);
komme tilbake 0;
}
Produksjon:
Her, sys/time.h har blitt inkludert for gettimeofday () funksjon og tidsstruktur. De gettimeofday () funksjon angi tiden i tidsmedlem (current_time) strukturmedlem. tv_sec er det integrerte antallet sekunder som har gått siden starten av UNIX -epoke , ved midnatt UTC 1. januar 1970 og tv_usec er et ekstra antall mikrosekunder som har gått fra tv_sec. Hvis du kjører programmet, bør du se utgangen. Hver gang du kjører programmet, endres utgangen.
NULL Argumentfeil
#inkludere#inkludere
inthoved-() {
strukturtimeval current_time;
gettimeofday(NULL,NULL);
komme tilbake 0;
}
Produksjon:
I dette eksemplet viser det første argumentet til gettimeofday () funksjonen skal ikke være NULL. Samlingsvarsel kommer hvis det første argumentet er NULL.
Formatering av gjeldende klokkeslett
#inkludere#inkludere
#inkludere
inthoved-() {
strukturtideval tv;
time_t t;
strukturtm*info;
røyebuffer[64];
gettimeofday(&TV,NULL);
t=TV.tv_sec;
info= lokal tid (&t);
printf ('%s', når som helst (info));
strftime (buffer, størrelsen avbuffer, 'I dag er %A, %B %d. n',info);
printf ('%s',buffer);
strftime (buffer, størrelsen avbuffer, 'Tiden er %I: %M %s. n',info);
printf ('%s',buffer);
komme tilbake 0;
}
Produksjon:
I dette eksemplet viser du hvordan du skriver ut dato og klokkeslett i et annet format. Det er ikke veldig lett å representere datoer fra returverdien på gettimeofday () funksjon. Her, lokal tid() og strftime () funksjoner brukes til å representere returverdien på gettimeofday () .
De lokal tid() funksjon tar et argument, som er en referanse til en peker på tv_sec innen struktur tid og returnerer en referanse til en peker på a struct tm gjenstand.
De strftime () funksjonen vil generere en personlig, formatert streng som viser dato og klokkeslett fra struct tm pekeren. Formatspesifikatorer brukes for formatert visning. For eksempel angir formatstrengen%d-%m-%Y%H:%M:%S dato og klokkeslett i dette skjemaet:
04-14-2020 13:09:42Følgende er konverteringsspesifikatorene, kan brukes for formatert skjerm:
Spesifikator | Betydning |
%til | Det forkortede navnet på ukedagen i henhold til gjeldende språk. |
%TIL | Navnet på ukedagen i henhold til gjeldende språk. |
% b | Navnet på den forkortede måneden i henhold til gjeldende språk. |
% B | Navnet på hele måneden i henhold til nåværende språk. |
% c | Den foretrukne representasjonen av dato og klokkeslett for den nåværende lokaliteten. |
%d | Som et desimaltall for månedsdagen (område 01 - 31). |
%H | Bruk 24 timer (område 00-23) til timen som desimalnummer. |
%JEG | Bruk 12 timer (område 00-23) til timen som desimalnummer. |
%j | Som et desimaltall for dagen i året (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 de tilsvarende strengene for gjeldende språk. |
%S | Desimalnummeret til det andre. |
% x | Foretrukket representasjon av datoen for gjeldende språk, men uten tid. |
% X | Foretrukket fremstilling av tidspunktet for gjeldende språk, men uten dato. |
%og | Året er desimal, men ingen århundre (varierer fra 00 - 99). |
%OG | Året er desimal inkludert århundre. |
%MED | Tidssonen. |
Bruke gettimeofday for å måle programmets gjennomføringstid
#inkludere#inkludere
inthoved-() {
strukturtidsbegrensning,slutt;
gettimeofday(&start,NULL);
til (intJeg= 0;Jeg<1e5 ;Jeg++) {
}
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)));
komme tilbake 0;
}
Produksjon:
Dette eksemplet viser hvordan gettimeofday () funksjonen kan brukes til å beregne utførelsestiden for et program.
Konklusjon
På denne måten vil gettimeofday () funksjonen kan brukes i Linux. For overføring av eksisterende kode, gettimeofday () funksjonen kan brukes, men i ny kode skal den ikke brukes. clock_gettime () funksjonen kan brukes i stedet for gettimeofday () .