Süntaks
intpäeva algus( struktuuriajaline*linn, struktuuriajavöönd*tz)The gettimeofday () funktsioon on määratletud sys/time.h päisefail.
Argumendid
Sellel funktsioonil on kaks argumenti:
1stargument viitab ajaline struktuur. The ajaline struktuur on deklareeritud järgmiselt sys/time.h päisefail:
struktuuriajaline{
aeg_t tv_sec; // kasutatakse sekundit
suseconds_t tv_usec; // kasutatakse mikrosekundite jaoks
}
Struktuuri ajaline struktuur tähistab kalendriaega. Sellel on kaks liiget:
- tv_sec : See on sekundite arv ajastust.
- tv_usec : See on täiendav mikrosekund pärast sekundite arvu arvutamist ajast. .
2ndargument viitab ajavöönd struktuur. Tavaliselt peaks see olema NULL, sest struktuuri ajavöönd on vananenud. See argument puudutab ainult tagurpidi ühilduvust.
Tagastab väärtused
Edu kohta, gettimeofday () tagastab 0, ebaõnnestumise korral tagastab funktsioon -1.
Lihtne hankida aega ja printida
#kaasake#kaasake
intpeamine() {
struktuuritimeval current_time;
päeva algus(&praegune_aeg,NULL);
printf ('sekundit: %ld nmikrosekundid: %ld ',
praegune_aeg.tv_sec,praegune_aeg.tv_usec);
tagasi 0;
}
Väljund:
Siin, sys/time.h jaoks on kaasatud gettimeofday () funktsioon ja ajaline struktuur. The gettimeofday () funktsioon määrab aja timeval (current_time) struktuuri liikmes. tv_sec on algusest möödunud sekundite lahutamatu arv UNIXi ajastu , keskööl UTC 1. jaanuaril 1970 ja tv_usec on täiendav arv mikrosekundeid, mis on möödunud ajast tv_sec. Kui käivitate programmi, peaksite nägema väljundit. Iga kord, kui programmi käivitate, muutub väljund.
NULL argumendi viga
#kaasake#kaasake
intpeamine() {
struktuuritimeval current_time;
päeva algus(NULL,NULL);
tagasi 0;
}
Väljund:
Selles näites on näidatud selle esimene argument gettimeofday () funktsioon ei tohiks olla NULL. Kompileerimise hoiatus tuleb, kui esimene argument on NULL.
Praeguse aja vormindamise näide
#kaasake#kaasake
#kaasake
intpeamine() {
struktuuriajaline televiisor;
aeg_t t;
struktuuritm*info;
süsipuhver[64];
päeva algus(&TV,NULL);
t=TV.tv_sec;
info= kohalik aeg (&t);
printf ('%s', sama palju aega (info));
strftime (puhver, suuruspuhver, 'Täna on %A, %B %d. n',info);
printf ('%s',puhver);
strftime (puhver, suuruspuhver, 'Aeg on %I: %M %p. n',info);
printf ('%s',puhver);
tagasi 0;
}
Väljund:
Selles näites on näidatud, kuidas printida kuupäeva ja kellaaega erinevas vormingus. Tagastamisväärtusest kuupäevi pole väga lihtne esitada gettimeofday () funktsiooni. Siin, kohalik aeg() ja strftime () Funktsioone kasutatakse ilusti tagastamisväärtuse esitamiseks gettimeofday () .
The kohalik aeg() funktsioon võtab argumendi, mis on viide kursorile tv_sec väli struktuuri ajaline ja tagastab viite a -kursorile struktuuri tm objekti.
The strftime () funktsioon loob isikupärastatud vormindatud stringi, mis näitab kuupäeva ja kellaaega struktuuri tm osuti. Vormindatud kuvamiseks kasutatakse vormingu spetsifikatsioone. Näiteks vormindustring%d-%m-%Y%H:%M:%S määrab kuupäeva ja kellaaja sellisel kujul:
14.04.2020 13:09:42Vormindatud kuvamiseks võib kasutada järgmisi konversioonide spetsifikatsioone:
Täpsustaja | Tähendus |
%kuni | Nädalapäeva lühendatud nimi vastavalt praegusele lokaadile. |
%TO | Nädalapäeva nimi vastavalt praegusele lokaadile. |
% b | Praeguse lokaadi järgi lühendatud kuu nimi. |
% B | Kogu kuu nimi vastavalt praegusele lokaadile. |
% c | Praeguse lokaadi kuupäeva ja kellaaja eelistatud esitus. |
%d | Kuupäeva kümnendarvuna (vahemik 01–31). |
%H | Kasutades kümnendarvuna 24 tundi (vahemik 00–23) kuni tund. |
%Mina | Kasutades kümnendarvuna 12 tundi (vahemik 00–23) kuni tund. |
%j | Aastapäeva kümnendarvuna (vahemik 001-366). |
%m | Kuu kümnendarvuna (vahemik 01–12). |
%M | Minuti kümnendarv. |
%lk | Põhineb määratud ajaväärtusel kas „am” või „pm” või samaväärsed stringid praeguse lokaadi jaoks. |
%S | Sekundi kümnendarv. |
% x | Praeguse lokaadi kuupäeva eelistatud esitus, kuid ilma kellaajata. |
% X | Praeguse lokaadi aja eelistatav esitus, kuid ilma kuupäevata. |
%ja | Aasta on kümnendkoht, kuid sajandit pole (vahemikus 00–99). |
%JA | Aasta on kümnendarv, sealhulgas sajand. |
%KOOS | Ajavöönd. |
Kasutades gettimeofday programmi täitmise aja mõõtmiseks
#kaasake#kaasake
intpeamine() {
struktuuriajaline algus,lõpp;
päeva algus(&alustada,NULL);
eest (inti= 0;i<1e5 ;i++) {
}
päeva algus(&lõpp,NULL);
printf ('10^5 -ni lugemiseks kuluv aeg on: %ld mikrosekundit n',
((lõpp.tv_sec * 10 000 000 +lõpp.tv_usec) -
(alustada.tv_sec * 10 000 000 +alustada.tv_usec)));
tagasi 0;
}
Väljund:
See näide näitab, kuidas gettimeofday () funktsiooni saab kasutada programmi täitmisaja arvutamiseks.
Järeldus
Sel viisil, gettimeofday () funktsiooni võib kasutada Linuxis. Olemasoleva koodi teisaldamiseks gettimeofday () funktsiooni võib kasutada, kuid uues koodis ei tohiks seda kasutada. clock_gettime () asemel võib kasutada funktsiooni gettimeofday () .