כיצד להשתמש בפונקציית gettimeofday בשפת C?

How Use Gettimeofday Function C Language



ה gettimeofday () פונקציה מקבלת את זמן השעון של המערכת. הזמן הנוכחי מתבטא בשניות שחלפו ובמיקרו -שניות מאז 00:00:00, 1 בינואר 1970 (יוניקס תקופה). במאמר זה, אנו הולכים להראות לך כיצד להשתמש ב- gettimeofday () פונקציה בלינוקס. אז בואו נתחיל.

תחביר

intgettimeofday( מבנהזמן*עִיר, מבנהאזור זמן*tz)

ה gettimeofday () הפונקציה מוגדרת ב- sys/time.h קובץ הכותרת.







טיעונים

פונקציה זו לוקחת שני טיעונים:



ה 1רחובהטיעון מצביע על זמן מִבְנֶה. ה זמן המבנה מוכרז כמפורט להלן sys/time.h קובץ הכותרת :



מבנהזמן{
time_t tv_sec; // בשימוש למשך שניות
suseconds_t tv_usec; // משמש למיקרו שניות
}

מבנה הזמן הזמן המבנה מייצג זמן לוח שנה. יש לה שני חברים:





  • tv_sec : זהו מספר השניות מאז התקופה.
  • tv_usec : זוהי מיקרו שניות נוספות לאחר חישוב מספר השניות מאז התקופה. .

ה 2ndהטיעון מצביע על אזור זמן מִבְנֶה. בדרך כלל יש להגדיר אותו ל- NULL מכיוון אזור זמן struct הוא מיושן. טענה זו מיועדת לתאימות לאחור בלבד.

החזר ערכים

על ההצלחה, ה gettimeofday () החזרה 0, לכישלון הפונקציה מחזירה -1.



פשוט קבל זמן והדפסה

#לִכלוֹל
#לִכלוֹל

intרָאשִׁי() {
מבנהזמן זמני_זמן;
gettimeofday(&זמן נוכחי,ריק);
printf ('שניות: %ld nמיקרו שניות: %ld ',
זמן נוכחי.tv_sec,זמן נוכחי.tv_usec);

לַחֲזוֹר 0;
}

תְפוּקָה:

פה, sys/time.h נכלל עבור gettimeofday () פונקציה ומבנה זמן. ה gettimeofday () פונקציה הגדירו את הזמן בחבר המבנה timeval (current_time). tv_sec הוא מספר האינטגרלי של השניות שחלפו מאז תחילת ה- עידן יוניקס , בחצות UTC ב- 1 בינואר 1970 ו- tv_usec הוא מספר נוסף של מיקרו שניות שחלפו מ- tv_sec. אם אתה מפעיל את התוכנית אתה אמור לראות את הפלט. בכל פעם שאתה מפעיל את התוכנית הפלט ישתנה.

NULL שגיאת ארגומנט

#לִכלוֹל
#לִכלוֹל

intרָאשִׁי() {

מבנהזמן זמני_זמן;
gettimeofday(ריק,ריק);
לַחֲזוֹר 0;
}

תְפוּקָה:

בדוגמה זו מראה כי הטיעון הראשון של gettimeofday () הפונקציה לא צריכה להיות NULL. אזהרת הידור תגיע אם הטענה הראשונה היא NULL.

עיצוב דוגמא לזמן הנוכחי

#לִכלוֹל
#לִכלוֹל
#לִכלוֹל

intרָאשִׁי() {
מבנהטלוויזיה של זמן;
time_t t;
מבנהtm*מידע;
לְהַשְׁחִירבַּלָם[64];

gettimeofday(&טֵלֶוִיזִיָה,ריק);
t=טֵלֶוִיזִיָה.tv_sec;

מידע= זמן מקומי (&t);
printf ('%s', בזמן השעה (מידע));
זמן זמן (בַּלָם, מידה שלבַּלָם, 'היום הוא %A, %B %d. n',מידע);
printf ('%s',בַּלָם);
זמן זמן (בַּלָם, מידה שלבַּלָם, 'הזמן הוא %I: %M %p. n',מידע);
printf ('%s',בַּלָם);

לַחֲזוֹר 0;
}

תְפוּקָה:

בדוגמה זו מראה כיצד להדפיס תאריך ושעה בפורמט אחר. לא קל לייצג תאריכים בערך ההחזרה של gettimeofday () פונקציה. פה, זמן מקומי() ו strftime () פונקציות משמשות לייצוג יפה של ערך ההחזרה של gettimeofday () .

ה זמן מקומי() פונקציה לוקחת ארגומנט, שהוא התייחסות למצביע של tv_sec שדה של מבנה זמן ומחזיר הפניה למצביע של a struct tm לְהִתְנַגֵד.

ה strftime () הפונקציה תיצור מחרוזת מותאמת אישית המציגה את התאריך והשעה מה- struct tm מַצבִּיעַ. מפרטי פורמט משמשים לתצוגה מעוצבת. לדוגמה, מחרוזת הפורמט%d-%m-%Y%H:%M:%S מציינת את התאריך והשעה בטופס זה:

04-14-2020 13:09:42

להלן מפרטי ההמרות, ניתן להשתמש בהם לתצוגה מעוצבת:

מפרט מַשְׁמָעוּת
השם המקוצר של יום חול לפי המקום הנוכחי.
שם יום החול לפי המקום הנוכחי.
% ב שם החודש המקוצר לפי המקום הנוכחי.
% ב שם החודש המלא לפי המקום הנוכחי.
% ג הייצוג המועדף על תאריך ושעה עבור המקום הנוכחי.
כמספר עשרוני ליום החודש (טווח 01 - 31).
שימוש 24 שעות (טווח 00-23) עד השעה כמספר עשרוני.
%אני שימוש ב- 12 שעות (טווח 00-23) עד השעה כמספר עשרוני.
%j כמספר עשרוני ליום השנה (טווח 001-366).
%M כמספר עשרוני לחודש (טווח 01 - 12).
%M המספר העשרוני של הדקה.
%p בהתבסס על ערך הזמן שצוין, 'am' או 'pm' או המחרוזות המקבילות לאזור הנוכחי.
%S המספר העשרוני של השני.
% איקס ייצוג מועדף של התאריך עבור המקום הנוכחי, אך ללא זמן.
% איקס ייצוג מועדף של הזמן עבור המקום הנוכחי, אך ללא תאריך.
השנה עשרונית אך אין מאה (נעה בין 00 - 99).
%AND השנה עשרונית כולל מאה.
%עם אזור הזמן.

שימוש ב- gettimeofday על מנת למדוד את זמן ביצוע התוכנית

#לִכלוֹל
#לִכלוֹל

intרָאשִׁי() {

מבנההתחלת זמן,סוֹף;
gettimeofday(&הַתחָלָה,ריק);

ל (intאני= 0;אני<1e5 ;אני++) {
}

gettimeofday(&סוֹף,ריק);
printf ('הזמן שנדרש לספור עד 10^5 הוא: %ld מיקרו שניות n',
((סוֹף.tv_sec * 1000000 +סוֹף.tv_usec) -
(הַתחָלָה.tv_sec * 1000000 +הַתחָלָה.tv_usec)));

לַחֲזוֹר 0;
}

תְפוּקָה:

דוגמה זו מראה כיצד gettimeofday () ניתן להשתמש בפונקציה לחישוב זמן הביצוע של תוכנית.

סיכום

בדרך זו, ה gettimeofday () הפונקציה עשויה לשמש ב- Linux. לצורך העברת הקוד הקיים, gettimeofday () ניתן להשתמש בפונקציה אך בקוד חדש אין להשתמש בה. clock_gettime () ניתן להשתמש בפונקציה במקום gettimeofday () .