Sintaksa
intgettimeofday( structtimeval*mesto, structčasovni pas*tz)The gettimeofday () funkcija je definirana v sys/time.h naslovno datoteko.
Argumenti
Ta funkcija ima dva argumenta:
1stargument kaže na timeval strukturo. The timeval struktura je navedena spodaj v sys/time.h naslovna datoteka:
structtimeval{
time_t tv_sec; // uporabljeno nekaj sekund
suseconds_t tv_usec; // uporabljeno za mikrosekunde
}
Strukturna časovna struktura predstavlja koledarski čas. Ima dva člana:
- tv_sec : To je število sekund od epohe.
- tv_usec : To je dodatne mikrosekunde po izračunu števila sekund od epohe. .
2ndargument kaže na časovni pas strukturo. Običajno je treba nastaviti na NULL, ker struktni časovni pas je zastarel. Ta argument je namenjen le povratni združljivosti.
Vrnjene vrednosti
O uspehu, gettimeofday () return 0, v primeru napake funkcija vrne -1.
Preprost čas in tiskanje
#vključi#vključi
intglavni() {
structtimeval current_time;
gettimeofday(&Trenutni čas,NIČ);
printf ('sekunde: %ld nmikro sekunde: %ld ',
Trenutni čas.tv_sec,Trenutni čas.tv_usec);
vrnitev 0;
}
Izhod:
Tukaj, sys/time.h je vključeno za gettimeofday () funkcijo in časovno strukturo. The gettimeofday () funkcija nastavi čas v članu strukture timeval (current_time). tv_sec je integralno število sekund, ki so pretekle od začetka Doba UNIX , ob polnoči UTC 1. januarja 1970 in tv_usec je dodatno število mikrosekund, ki so pretekle od tv_sec. Če zaženete program, bi morali videti izhod. Vsakič, ko zaženete program, se bo izhod spremenil.
Napaka argumenta NULL
#vključi#vključi
intglavni() {
structtimeval current_time;
gettimeofday(NIČ,NIČ);
vrnitev 0;
}
Izhod:
V tem primeru je prikazan prvi argument gettimeofday () funkcija ne sme biti NULL. Če je prvi argument NULL, se prikaže opozorilo pri sestavljanju.
Primer oblikovanja trenutnega časa
#vključi#vključi
#vključi
intglavni() {
structTimeval TV;
time_t t;
structtm*info;
charpufra[64];
gettimeofday(&tv,NIČ);
t=tv.tv_sec;
info= lokalni čas (&t);
printf ('%s', asctime (info));
strftime (pufra, velikostofpufra, 'Danes je %A, %B %d. n',info);
printf ('%s',pufra);
strftime (pufra, velikostofpufra, „Čas je %I: %M %p. n',info);
printf ('%s',pufra);
vrnitev 0;
}
Izhod:
V tem primeru je prikazano, kako natisniti datum in čas v drugačni obliki. Predstavljati datume iz vrnjene vrednosti ni zelo enostavno gettimeofday () funkcijo. Tukaj, lokalni čas() in strftime () funkcije se uporabljajo za lepo predstavitev vrnjene vrednosti gettimeofday () .
The lokalni čas() funkcija sprejme argument, ki je sklic na kazalec na tv_sec polje struct timeval in vrne sklic na kazalec na struct tm predmet.
The strftime () funkcija bo ustvarila prilagojen, oblikovan niz, ki prikazuje datum in čas iz struct tm kazalec. Specifikatorji oblike se uporabljajo za oblikovan prikaz. Na primer niz za obliko%d-%m-%Y%H:%M:%S podaja datum in čas v tej obliki:
14.04.2020 13:09:42Za oblikovani prikaz se lahko uporabijo specifikatorji pretvorbe:
Specifikator | Pomen |
%do | Skrajšano ime dneva v tednu glede na trenutno lokacijo. |
%TO | Ime dneva v tednu glede na trenutno lokacijo. |
% b | Ime skrajšanega meseca glede na trenutno lokacijo. |
% B | Ime celotnega meseca glede na trenutno lokacijo. |
% c | Prednostna predstavitev datuma in časa za trenutno področno nastavitev. |
%d | Kot decimalno število za dan meseca (razpon 01 - 31). |
%H | Uporabite 24 ur (razpon 00-23) do ure kot decimalno število. |
%JAZ | Uporabite 12 ur (razpon 00-23) do ure kot decimalno število. |
%j | Kot decimalno število za dan v letu (obseg 001-366). |
%m | Kot decimalno število za mesec (razpon 01 - 12). |
%M | Decimalno število minute. |
%str | Na podlagi podane časovne vrednosti bodisi 'am' ali 'pm' ali enakovrednih nizov za trenutno področno nastavitev. |
%S | Decimalno število drugega. |
% x | Prednostna predstavitev datuma za trenutno področno nastavitev, vendar brez časa. |
% X | Prednostna predstavitev časa za trenutno področno nastavitev, vendar brez datuma. |
%in | Leto je decimalno, vendar brez stoletja (razpon od 00 do 99). |
%AND | Leto je decimalno, vključno s stoletjem. |
%Z | Časovni pas. |
Uporaba gettimeofday za merjenje časa izvajanja programa
#vključi#vključi
intglavni() {
structčasovni začetek,konec;
gettimeofday(&začetek,NIČ);
za (intjaz= 0;jaz<1e5 ;jaz++) {
}
gettimeofday(&konec,NIČ);
printf ('Čas za štetje do 10^5 je: %ld mikro sekund n',
((konec.tv_sec * 1000000 +konec.tv_usec) -
(začetek.tv_sec * 1000000 +začetek.tv_usec)));
vrnitev 0;
}
Izhod:
Ta primer kaže, kako gettimeofday () funkcijo lahko uporabite za izračun časa izvajanja programa.
Zaključek
Na ta način je gettimeofday () funkcijo lahko uporabljate v Linuxu. Za prenos obstoječe kode je gettimeofday () Funkcija se lahko uporablja, vendar se v novi kodi ne sme uporabljati. clock_gettime () funkcijo lahko uporabite namesto gettimeofday () .