C programozás

A gettimeofday függvény használata C nyelven?

A gettimeofday függvény használata C nyelven?
A gettimeofday () függvény megkapja a rendszer órájának idejét. Az aktuális időt eltelt másodpercekben és mikroszekundumokban fejezik ki 1970. január 1-jén 00:00:00 óta (Unix-korszak). Ebben a cikkben megmutatjuk, hogyan kell használni a gettimeofday () funkció Linux alatt. Tehát kezdjük.

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:

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.

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:42

Az 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 ().

A legjobb játékok kézi követéssel
Az Oculus Quest nemrégiben bemutatta a vezérlés nélküli kézi követés nagyszerű ötletét. Az egyre növekvő számú játékkal és tevékenységgel, amelyek tám...
Az OSD-fedvény megjelenítése teljes képernyős Linux-alkalmazásokban és játékokban
Teljes képernyős játékok lejátszása vagy alkalmazások figyelemelterelés nélküli, teljes képernyős módban történő használata elvághatja a panelen vagy ...
Az 5 legjobb játékrögzítő kártya
Mindannyian láttuk és szerettük a YouTube-on a streaming játékokat. A PewDiePie, a Jakesepticye és a Markiplier csak néhány a legnépszerűbb játékosok ...