Szintaxis
intnap kezdete( strukidőtartam*város, strukidőzóna*tz)Az gettimeofday () funkció definiálva van sys/time.h fejléc fájl.
Érvek
Ez a függvény két érvet tartalmaz:
Az 1utcaérv arra mutat időtartam szerkezet. Az időtartam szerkezetét az alábbiak szerint deklarálják sys/time.h fejléc fájl:
strukidőtartam{
time_t tv_sec; // másodpercig használt
suseconds_t tv_usec; // mikroszekundumokra használják
}
A szerkezet időbeli szerkezete naptári időt jelent. Két tagja van:
- tv_sec : Ez a korszak óta eltelt másodpercek száma.
- tv_usec : Ez további mikroszekundum a korszak óta eltelt másodpercek számítása után. .
A 2ndérv arra mutat időzóna szerkezet. Általában NULL értékre kell állítani, mert struktúra időzóna elavult. Ez az érv csak a visszafelé való kompatibilitásról szól.
Visszaadja az értékeket
A sikerről a gettimeofday () return 0, hiba esetén a függvény -1 -et ad vissza.
Egyszerű idő és nyomtatás
#befoglalni#befoglalni
intfő-() {
struktimeval current_time;
nap kezdete(&aktuális idő,NULLA);
printf ('másodperc: %ld nmikroszekundumok: %ld ',
aktuális idő.tv_sec,aktuális idő.tv_usec);
Visszatérés 0;
}
Kimenet:
Itt, sys/time.h tartalmazza gettimeofday () funkció és időbeli szerkezet. Az gettimeofday () függvény beállítja az időt a timeval (current_time) struktúra tagjában. A tv_sec a kezdete óta eltelt másodpercek integrált száma UNIX korszak , 1970. január 1 -én éjfélkor (UTC) és a tv_usec további mikroszekundumok teltek el a tv_sec időponttól. Ha futtatja a programot, látnia kell a kimenetet. Minden alkalommal, amikor futtatja a programot, a kimenet változik.
NULL érvhiba
#befoglalni#befoglalni
intfő-() {
struktimeval current_time;
nap kezdete(NULLA,NULLA);
Visszatérés 0;
}
Kimenet:
Ebben a példában az első argumentuma látható gettimeofday () függvény nem lehet NULL. A fordítási figyelmeztetés akkor jelenik meg, ha az első argumentum NULL.
Példa az aktuális idő formázására
#befoglalni#befoglalni
#befoglalni
intfő-() {
struktimeval tv;
time_t t;
struktm*info;
charpuffer[64];
nap kezdete(&tévé,NULLA);
t=tévé.tv_sec;
info= helyi idő (&t);
printf ('%s', asctime (info));
strftime (puffer, méretepuffer, 'Ma %A, %B %d van. n',info);
printf ('%s',puffer);
strftime (puffer, méretepuffer, 'Az idő %I: %M %p. n',info);
printf ('%s',puffer);
Visszatérés 0;
}
Kimenet:
Ebben a példában bemutatjuk, hogyan lehet különböző formátumban nyomtatni a dátumot és az időt. Nem túl könnyű a dátumokat a (z) visszatérési értékéből ábrázolni gettimeofday () funkciót. Itt, helyi idő() és strftime () függvények segítségével szépen ábrázolja a visszatérési értékét gettimeofday () .
Az helyi idő() függvény egy argumentumot vesz fel, amely hivatkozás a mutatóra tv_sec mezője strukture timeval és egy hivatkozást ad vissza az a mutatójára struk tm tárgy.
Az strftime () függvény egy személyre szabott, formázott karakterláncot generál, amely a dátumot és az időt mutatja struk tm mutató. A formátummeghatározókat a formázott megjelenítéshez használják. Például a formátum karakterlánc%d-%m-%Y%H:%M:%S a dátumot és az időt adja meg ebben a formában:
2020. 04. 14. 13:09:42Az alábbiakban a konverziós specifikátorok használhatók a formázott megjelenítéshez:
Specifikátor | Jelentése |
%nak nek | A hét napja rövidített neve a jelenlegi területi beállítás szerint. |
%NAK NEK | A hét napja neve a jelenlegi terület szerint. |
% b | A jelenlegi hely szerinti rövidített hónap neve. |
% B | A teljes hónap neve a jelenlegi terület szerint. |
% c | A dátum és az idő preferált ábrázolása a jelenlegi területi beállításhoz. |
%d | Tizedes számként a hónap napjára (01-31 tartomány). |
%H | A 24 óra (00-23 tartomány) és az óra közötti tizedes szám használatával. |
%ÉN | Használja a 12 órát (00-23 tartomány) az óra tizedes számként. |
%j | Tizedes számként az év napjára (001-366 tartomány). |
%m | A hónap tizedes számaként (01-12). |
%M | A perc tizedes száma. |
%p | A megadott időérték alapján vagy „am” vagy „pm”, vagy az aktuális területi beállításokkal egyenértékű karakterláncok. |
%S | A másodperc tizedes száma. |
% x | Az aktuális terület dátumának preferált megjelenítése, de idő nélkül. |
% X | Az aktuális terület megfelelő időpontjának preferált ábrázolása, de dátum nélkül. |
%és | Az év tizedes, de nincs évszázad (00 és 99 között). |
%ÉS | Az év tizedes, beleértve a századot is. |
%VAL VEL | Az időzóna. |
A gettimeofday használata a program végrehajtási idejének mérésére
#befoglalni#befoglalni
intfő-() {
struktimeval start,vége;
nap kezdete(&Rajt,NULLA);
számára (intén= 0;én<1e5 ;én++) {
}
nap kezdete(&vége,NULLA);
printf ('A 10^5 -ig történő számláláshoz szükséges idő: %ld mikroszekundum n',
((vége.tv_sec * 1000000 +vége.tv_usec) -
(Rajt.tv_sec * 1000000 +Rajt.tv_usec)));
Visszatérés 0;
}
Kimenet:
Ez a példa azt mutatja, hogy hogyan gettimeofday () függvény használható egy program végrehajtási idejének kiszámításához.
Következtetés
Ily módon a gettimeofday () funkció használható Linux alatt. A meglévő kód átviteléhez a gettimeofday () funkció használható, de az új kódban nem szabad használni. clock_gettime () funkció helyett használható gettimeofday () .