gettimeofday et setTimeofday en c

gettimeofday et setTimeofday en c
«Beaucoup d'entre nous connaissent les deux fonctions liées à l'heure du système d'exploitation Linux. Ce sont une fonction getTimeOfday () et la fonction setTimeOfday (). Ces deux fonctions nous aident à déterminer le temps réel de la plate-forme Linux. Dans la conversation d'aujourd'hui, nous explorerons les caractéristiques et les mécanismes fonctionnels de ces fonctions.

Au début, nous comprendrons la fonction gettimeofday ()."

getTimeOfday ()

La fonction gettimeofday () est une fonction standard dont la définition est écrite dans un fichier d'en-tête dans la bibliothèque C nommée Sys / Time.H.

Syntaxe
La syntaxe de la fonction getTimeOfday () est décrite ci-dessous

Int gettimeofday (struct timeval * tm_vl, struct horonozone * tm_zn)

La fonction getTimeOfday () prend deux paramètres comme arguments à l'intérieur de sa parenthèse. L'un d'eux est le tm_vl variable qui contient un type de données temporel, et un autre est le tm_zn variable qui contient un type de données de fuseau horaire.

Il existe deux membres de données standard qui existent dans la structure TimeVal. Le premier est tv_sec, Et un autre est tv_usec. tv_sec représente le temps en secondes et la télévision_USEC représente la durée en microseconde.

À l'heure actuelle, la structure du fuseau horaire n'est pas utilisée car elle est diminuée dans sa valeur sur une période de temps. Pour ça, nous passons NUL comme valeur de la structure du fuseau horaire.

Exemple de programmation 1
Ceci est un programme pour prendre le temps d'une fonction particulière pour exécuter.

#inclure
#inclure
#inclure
#inclure
float tm_com (struct timeval * str, struct timeval * lst)

return (lst-> tv_sec - str-> tv_sec) + 1e-6 * (lst-> tv_usec - str-> tv_usec);

itération void (count size_t)

pour (int j = 0; j% d) Temps pris:% 0.8f sec \ n ",
comte1, tm_com (& str, & lst));
getTimeOfday (& str, null);
itération (comte2);
getTimeofday (& lst, null);
printf ("Fonction Iterator (Count de boucle ->% d) Temps pris:% 0.8f sec \ n ",
comte2, tm_com (& str, & lst));
exit (exit_success);

Sortir

Explication
À l'intérieur de la fonction Main (), nous créerons deux variables nommées «Str" et "LST" d'une structure nommée «Timeval." Nous créerons également deux variables nommées "Count1" et «Count2».

À l'intérieur de la fonction getTimeOfday (), nous passerons "Str" et NUL. Ensuite, nous appellerons une fonction nommée "itération," Quelle définition est écrite au-dessus de la fonction principale (). À l'intérieur de la fonction itération (), nous passerons le "Count1". À l'intérieur de la fonction getTimeOfday (), nous passerons "LST" et NUL.

Après cela, de "LST" et «Str», » Nous obtiendrons le temps d'exécution de la fonction "itération" pour la valeur "Count1" comme première sortie.

Le processus ci-dessus est à nouveau réalisé pour une autre valeur plus grande transmise par la variable «Count2».

C'est pourquoi nous avons observé que le temps d'exécution pour «Count2» est plus que "Count1".

Exemple de programmation 2
Ce programme montre la valeur de retour de GetTimeofday sur le succès ou l'échec.

#inclure
#inclure
#inclure
int main (int argc, char * argv [])

Struct TimeVal Courant;
int ld;
ld = getTimeOfday (& current, null);
if (ld == 0)
printf ("Cette déclaration s'exécute . Cela signifie que gettimeofday réussit. \ n ");
printf ("Second:% lu \ n microseconde:% 06lu \ n",
actuel.tv_sec, actuel.tv_usec);

autre
printf ("Cette déclaration s'exécute . Cela signifie que GetTimeofday est infructueux!! errno =% d \ n ",
errno);
retour -1;

retour 0;

Sortir

Explication
Ici, nous créons une variable nommée «Current» sous la structure TimeVal et une variable de type entier nommé "Identifiant." Nous allons maintenant appeler la fonction getTimeOfday (), et nous passerons deux paramètres comme arguments. Les deux arguments sont "actuel" et NUL. Quelle que soit la valeur qui renverra cette fonction; il sera affecté à la variable ID.

Si la "Identifiant”La valeur est zéro, la fonction getTimeOfday () exécute avec succès et imprime l'heure en deuxième et microseconde; sinon ne pas exécuter avec succès.

setTimeOfday ()

La fonction setTimeOfday () est une fonction standard dont la définition est mentionnée dans un fichier d'en-tête dans la bibliothèque C nommée SYS / Time.H. Cette fonction nous aide à passer le temps de l'horloge à la norme universelle.

Syntaxe

La syntaxe de la fonction setTimeOfday () est décrite ci-dessous.

int setTimeOfday (struct timeval * tm_vl, struct horonozone * tm_zn)

La fonction setTimeOfday () prend deux paramètres comme arguments à l'intérieur de sa parenthèse. L'un d'eux est tm_vl; C'est un pointeur de la structure TimeVal qui représente le temps en secondes et microsecondes. Un autre est tm_zn. À l'heure actuelle, la structure du fuseau horaire n'est pas utilisée car elle est arrière dans sa valeur sur une période de temps. Pour ça, nous passons NUL comme valeur de la structure du fuseau horaire.

Retour
Sur une exécution réussie de la fonction setTimeOfday (), il renvoie 0.

Sur l'exécution infructueuse de la fonction setTimeOfday (), il renvoie -1.

Exemple de programmation 3
Cette fonction affichera la valeur de retour sur l'exécution réussie de cette fonction.

#inclure
#inclure
#inclure
int main()

struct timeval tm_vl;
int Sreturn;
tm_vl.tv_sec = 1885151555;
tm_vl.tv_usec = 0;
sreturn = setTimeOfday (& tm_vl, null);
if (sreturn == 0)

printf ("setTimeOfday est exécuté sans aucune erreur \ n");

autre
printf ("setTimeofday est échoué"
"errno =% d \ n", errno);
retour -1;

retour 0;

Sortir
Exécuter sans sudo et donc setTimeOfday () est échoué.

Courir avec sudo et donc setTimeOfday () réussit.

Explication
Ici, nous créons deux variables nommées "TV_SEC" et "TV_USEC." Les deux variables sont un membre du «Timeval» Structure et attribuer une certaine valeur. Ensuite, nous appellerons la fonction setTimeOfday (), et à l'intérieur de la fonction, nous passerons le "TM_VAL" variable. Quelle que soit la valeur qui reviendra, cette fonction sera attribuée au «Sreturn» variable. Si la «Sreturn» Variable Renvoie 0, alors cette fonction a été exécutée avec succès et donne sa sortie; sinon non exécuté avec succès et imprime la valeur de "Errno" à une valeur particulière (pour ce programme, c'est 1).

Ici, au début, nous avons exécuté le programme sans sudo, et c'est pourquoi setTimeOfday () n'a pas pu s'exécuter avec succès et retourné -1.

Pour la deuxième fois, nous avons exécuté le programme avec Sudo, et setTimeOfday () est réussi et retourné 0.

Conclusion

Dans la discussion précédente, nous avons obtenu beaucoup d'informations sur la fonction gettimeofday () et la fonction setTimeOfday (). Ces deux fonctions sont les fonctions les plus importantes en termes de plate-forme Linux dans le langage C dans le contenu du temps. Pour obtenir du temps en entrée et pour définir du temps sur le système, ces deux fonctions nous aident beaucoup à configurer le système.