Szintaxis
int gettimeofday (struct timeval * tp, strukturált időzóna * tz)A gettimeofday () függvény meghatározása sys / idő.h fejlécfájl.
Érvek
Ennek a függvénynek két argumentuma van:
Az 1utca érv rámutat a időzítés szerkezet. A időzítés szerkezetét az alábbiak szerint deklarálják sys / idő.h fejlécfájl:
strukturálási időtime_t tv_sec; // másodpercekig használható
suseconds_t tv_usec; // mikroszekundumokra használatos
A strukturális időbeli struktúra egy naptári időt képvisel. Két tagja van:
- tv_sec : Ez a korszak óta eltelt másodpercek száma.
- tv_usec : Ez további mikroszekundum a másodpercek számítása után a korszak óta…
A 2nd érv rámutat a időzóna szerkezet. Normál esetben NULL értékre kell állítani, mert strukturált időzóna elavult. Ez az érvelés csak a visszamenőleges kompatibilitásra vonatkozik.
Visszatérési értékek
A sikeren a gettimeofday () visszatér 0, meghibásodás esetén a függvény -1-et ad vissza.
Egyszerű idő és nyomtatás
#include#include
int main ()
struct timeval current_time;
gettimeofday (& current_time, NULL);
printf ("másodperc:% ld \ nm mikroszekundum:% ld",
aktuális idő.tv_sec, current_time.tv_usec);
visszatér 0;
Kimenet:
Itt, sys / idő.h bekerült a gettimeofday () funkció és időbeli struktúra. A gettimeofday () függvény állítsa be az időt a timeval (current_time) szerkezeti tagban. A tv_sec a program kezdete óta eltelt másodpercek egész száma UNIX korszak, éjfélkor, UTC, 1970. január 1-jén, és a tv_usec a tv_sec-től eltelt további mikroszekundumok száma. Ha futtatja a programot, látnia kell a kimenetet. A program minden futtatásakor a kimenet megváltozik.
NULL argumentumhiba
#include#include
int main ()
struct timeval current_time;
gettimeofday (NULL, NULL);
visszatér 0;
Kimenet:
Ebben a példában a gettimeofday () függvény nem lehet NULL. Az összeállításra vonatkozó figyelmeztetés akkor jelenik meg, ha az első argumentum NULL.
Példa az aktuális idő formázására
#include#include
#include
int main ()
struct timeval tv;
idő_t t;
struct tm * info;
char puffer [64];
gettimeofday (& tv, NULL);
t = tv.tv_sec;
info = helyi idő (& t);
printf ("% s", asctime (info));
strftime (puffer, puffer mérete, "Ma% A,% B% d.\ n ", információ);
printf ("% s", puffer);
strftime (puffer, puffer mérete, "Az idő% I:% M% p.\ n ", információ);
printf ("% s", puffer);
visszatér 0;
Kimenet:
Ebben a példában bemutatjuk, hogyan lehet különböző formátumban kinyomtatni 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ó . Itt, helyi idő() és strftime () függvényekkel szépen ábrázolják a gettimeofday ().
A helyi idő() függvény argumentumot vesz fel, amely hivatkozás a tv_sec területe strukturálási idő és visszaad egy hivatkozást az a mutatójára struct tm tárgy.
A strftime () függvény létrehoz egy személyre szabott, formázott karakterláncot, amely megmutatja a dátumot és az időt a struct tm mutató. A formátummegjelölőket a formázott megjelenítéshez használják. Például a „% d-% m-% Y% H:% M:% S” formátum-karakterlánc a dátumot és az időt a következő formában határozza meg:
2020-04-14 13:09:42Az alábbiakban a konverziós specifikációk használhatók formázott megjelenítéshez:
Specifikátor | Jelentése |
% a | A hétköznap rövidített neve a jelenlegi területi beállítás szerint. |
% A | A hétköznap neve a jelenlegi területi beállítás szerint. |
% b | A rövidített hónap neve a jelenlegi területi beállítás szerint. |
% B | A teljes hónap neve a jelenlegi területi beállítás 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 órás (00–23 tartomány) órát tizedes számként használva. |
%ÉN | Tízes számként 12 órát (00–23 tartomány) használunk az órára. |
% j | Tizedes számként az év napjára (001–366 tartomány). |
% m | Tizedes számként a hónapra (01–12 tartomány). |
% M | A perc tizedes száma. |
% p | A megadott időérték alapján vagy „am”, vagy „pm”, vagy az ennek megfelelő helyi karakterláncok. |
% S | A második tizedesjegye. |
%x | Az aktuális területi dátum preferált ábrázolása, de idő nélkül. |
%X | Az idő preferált ábrázolása az aktuális területi beállításokhoz, de dátum nélkül. |
% y | Az év tizedes, de nincs évszázad (00 és 99 közötti tartomány). |
% Y | Az év tizedes, beleértve az évszázadot is. |
% Z | Az időzóna. |
A gettimeofday használata a program végrehajtási idejének mérésére
#include#include
int main ()
strukturált időbeli kezdet, vég;
gettimeofday (& start, NULL);
mert (int i = 0; i <1e5 ; i++)
gettimeofday (& end, NULL);
printf ("A 10 ^ 5-ig történő számláláshoz szükséges idő:% ld mikro másodperc \ n",
((vég.tv_sec * 1000000 + vég.tv_usec) -
(Rajt.tv_sec * 1000000 + start.tv_usec)));
visszatér 0;
Kimenet:
Ez a példa azt mutatja, hogy hogyan gettimeofday () függvény használható a program végrehajtási idejének kiszámításához.
Következtetés
Ily módon a gettimeofday () függvény használható Linux alatt. A meglévő kód portolásához a gettimeofday () A funkció használható, de új kódban nem szabad használni. clock_gettime () függvény használható gettimeofday ().