Πώς να χρησιμοποιήσετε τη λειτουργία gettimeofday στη γλώσσα C;

How Use Gettimeofday Function C Language



ο gettimeofday () η λειτουργία παίρνει το χρόνο ρολογιού του συστήματος. Η τρέχουσα ώρα εκφράζεται σε δευτερόλεπτα και μικροδευτερόλεπτα από τη 00:00:00, 1 Ιανουαρίου 1970 (Unix Epoch). Σε αυτό το άρθρο, θα σας δείξουμε πώς να χρησιμοποιήσετε το gettimeofday () λειτουργία στο Linux. Λοιπόν, ας ξεκινήσουμε.

Σύνταξη

intgettimeofday( δομήχρονικό διάστημα*πόλη, δομήζώνη ώρας*τζ)

ο gettimeofday () η συνάρτηση ορίζεται σε sys/time.h αρχείο κεφαλίδας.







Επιχειρήματα

Αυτή η συνάρτηση παίρνει δύο επιχειρήματα:



Το 1stτο επιχείρημα δείχνει το χρονικό διάστημα δομή. ο χρονικό διάστημα η δομή δηλώνεται ως παρακάτω στο sys/time.h αρχείο κεφαλίδας:



δομήχρονικό διάστημα{
time_t tv_sec? // χρησιμοποιείται για δευτερόλεπτα
suseconds_t tv_usec? // χρησιμοποιείται για μικροδευτερόλεπτα
}

Η δομή χρονικής δομής αντιπροσωπεύει έναν ημερολογιακό χρόνο. Έχει δύο μέλη:





  • tv_sec : Είναι ο αριθμός των δευτερολέπτων από την εποχή.
  • tv_usec : Είναι επιπλέον μικροδευτερόλεπτα μετά τον υπολογισμό του αριθμού των δευτερολέπτων από την εποχή. Το

Το 2ndτο επιχείρημα δείχνει το ζώνη ώρας δομή. Κανονικά θα πρέπει να οριστεί σε NULL επειδή δομή ζώνης ώρας είναι ξεπερασμένο. Αυτό το επιχείρημα είναι μόνο για αντίστροφη συμβατότητα.

Επιστροφή τιμών

Για την επιτυχία, το gettimeofday () επιστροφή 0, για αποτυχία η συνάρτηση επιστρέφει -1.



Απλή Λήψη χρόνου και εκτύπωση

#περιλαμβάνω
#περιλαμβάνω

intκύριος() {
δομήχρονικό διάστημα current_time?
gettimeofday(&τρέχουσα_ ώρα,ΜΗΔΕΝΙΚΟ)?
printf ('δευτερόλεπτα: %ld nμικρο δευτερόλεπτα: %ld ',
τρέχουσα_ ώραtv_sec,τρέχουσα_ ώραtv_usec)?

ΕΠΙΣΤΡΟΦΗ 0?
}

Παραγωγή:

Εδώ, sys/time.h έχει συμπεριληφθεί για gettimeofday () συνάρτηση και χρονική δομή. ο gettimeofday () συνάρτηση ορίστε την ώρα στο χρονικό (τρέχον_ώρο) μέλος δομής. tv_sec είναι ο αναπόσπαστος αριθμός δευτερολέπτων που έχουν παρέλθει από την έναρξη του Εποχή UNIX , τα μεσάνυχτα UTC την 1η Ιανουαρίου 1970 και tv_usec είναι ένας επιπλέον αριθμός μικροδευτερολέπτων που έχουν παρέλθει από το tv_sec. Εάν εκτελείτε το πρόγραμμα, θα πρέπει να δείτε την έξοδο. Κάθε φορά που εκτελείτε το πρόγραμμα η έξοδος αλλάζει.

NULL Argument Error

#περιλαμβάνω
#περιλαμβάνω

intκύριος() {

δομήχρονικό διάστημα current_time?
gettimeofday(ΜΗΔΕΝΙΚΟ,ΜΗΔΕΝΙΚΟ)?
ΕΠΙΣΤΡΟΦΗ 0?
}

Παραγωγή:

Σε αυτό το παράδειγμα παρουσιάζεται το πρώτο όρισμα του gettimeofday () η λειτουργία δεν πρέπει να είναι NULL. Η προειδοποίηση σύνταξης θα έρθει εάν το πρώτο όρισμα είναι NULL.

Μορφοποίηση Παράδειγμα τρέχουσας ώρας

#περιλαμβάνω
#περιλαμβάνω
#περιλαμβάνω

intκύριος() {
δομήtimeval tv?
time_t t?
δομήtm*πληροφορίες?
απανθρακώνωρυθμιστής[64]?

gettimeofday(&τηλεόραση,ΜΗΔΕΝΙΚΟ)?
τ=τηλεόραση.tv_sec?

πληροφορίες= Τοπική ώρα (&τ)?
printf ('%μικρό', asctime (πληροφορίες))?
χρόνος διάρκειας (ρυθμιστής, μέγεθος τουρυθμιστής, 'Σήμερα είναι %A, %B %d. n',πληροφορίες)?
printf ('%μικρό',ρυθμιστής)?
χρόνος διάρκειας (ρυθμιστής, μέγεθος τουρυθμιστής, «Ο χρόνος είναι %I: %M %p. n',πληροφορίες)?
printf ('%μικρό',ρυθμιστής)?

ΕΠΙΣΤΡΟΦΗ 0?
}

Παραγωγή:

Σε αυτό το παράδειγμα παρουσιάζεται ο τρόπος εκτύπωσης ημερομηνίας και ώρας σε διαφορετική μορφή. Δεν είναι πολύ εύκολο να αναπαραστήσουμε ημερομηνίες από την τιμή επιστροφής του gettimeofday () λειτουργία . Εδώ, Τοπική ώρα() και strftime () Οι συναρτήσεις χρησιμοποιούνται για να αναπαριστούν όμορφα την τιμή επιστροφής του gettimeofday () Το

ο Τοπική ώρα() συνάρτηση παίρνει ένα όρισμα, το οποίο είναι μια αναφορά σε έναν δείκτη του tv_sec πεδίο του δομή χρονικού διαστήματος και επιστρέφει μια αναφορά σε έναν δείκτη του a strukt tm αντικείμενο.

ο strftime () η λειτουργία θα δημιουργήσει μια εξατομικευμένη, μορφοποιημένη συμβολοσειρά που θα δείχνει την ημερομηνία και την ώρα από το strukt tm δείκτης. Τα καθοριστικά μορφής χρησιμοποιούνται για μορφοποιημένη εμφάνιση. Για παράδειγμα, η συμβολοσειρά μορφής%d-%m-%Y%H:%M:%S καθορίζει την ημερομηνία και την ώρα σε αυτήν τη μορφή:

04-14-2020 13:09:42

Ακολουθούν τα καθοριστικά μετατροπών, που μπορούν να χρησιμοποιηθούν για μορφοποιημένη εμφάνιση:

Προδιαγραφέας Εννοια
%προς το Το συντομευμένο όνομα της ημέρας της εβδομάδας σύμφωνα με την τρέχουσα τοπική ρύθμιση.
%ΠΡΟΣ ΤΟ Το όνομα της ημέρας της εβδομάδας σύμφωνα με την τρέχουσα τοπική ρύθμιση.
% β Όνομα του συντομευμένου μήνα σύμφωνα με την τρέχουσα τοπική ρύθμιση.
% Β Όνομα ολόκληρου του μήνα σύμφωνα με τις τρέχουσες τοπικές ρυθμίσεις.
% c Η προτιμώμενη αναπαράσταση ημερομηνίας και ώρας για την τρέχουσα τοπική ρύθμιση.
%ρε Ως δεκαδικός αριθμός για την ημέρα του μήνα (εύρος 01 - 31).
Χρησιμοποιώντας 24 ώρες (εύρος 00-23) έως την ώρα ως δεκαδικός αριθμός.
%ΕΓΩ Χρησιμοποιώντας 12 ώρες (εύρος 00-23) έως την ώρα ως δεκαδικός αριθμός.
%j Ως δεκαδικός αριθμός για την ημέρα του έτους (εύρος 001-366).
Ως δεκαδικός αριθμός για το μήνα (εύρος 01 - 12).
Ο δεκαδικός αριθμός του λεπτού.
Με βάση την καθορισμένη τιμή ώρας, είτε «πμ» είτε «μμ» ή τις αντίστοιχες συμβολοσειρές για την τρέχουσα τοπική ρύθμιση.
%ΜΙΚΡΟ Ο δεκαδικός αριθμός του δεύτερου.
% Χ Προτιμώμενη αναπαράσταση της ημερομηνίας για την τρέχουσα τοπική ρύθμιση, αλλά χωρίς χρόνο.
% Χ Προτιμώμενη αναπαράσταση της ώρας για την τρέχουσα τοπική ρύθμιση, αλλά χωρίς ημερομηνία.
%και Το έτος είναι δεκαδικό αλλά όχι αιώνα (εύρος από 00 - 99).
%ΚΑΙ Το έτος είναι δεκαδικό συμπεριλαμβανομένου του αιώνα.
%ΜΕ Η ζώνη ώρας.

Χρήση του gettimeofday για τη μέτρηση του χρόνου εκτέλεσης του προγράμματος

#περιλαμβάνω
#περιλαμβάνω

intκύριος() {

δομήχρονική έναρξη,τέλος?
gettimeofday(&αρχή,ΜΗΔΕΝΙΚΟ)?

Για (intΕγώ= 0?Εγώ<1ε5 ?Εγώ++) {
}

gettimeofday(&τέλος,ΜΗΔΕΝΙΚΟ)?
printf (Ο χρόνος που απαιτείται για να μετρηθεί έως το 10^5 είναι: %ld μικρο δευτερόλεπτα n',
((τέλος.tv_sec * 1000000 +τέλος.tv_usec) -
(αρχή.tv_sec * 1000000 +αρχή.tv_usec)))?

ΕΠΙΣΤΡΟΦΗ 0?
}

Παραγωγή:

Αυτό το παράδειγμα δείχνει πώς gettimeofday () συνάρτηση μπορεί να χρησιμοποιηθεί για τον υπολογισμό του χρόνου εκτέλεσης ενός προγράμματος.

συμπέρασμα

Με αυτόν τον τρόπο, το gettimeofday () μπορεί να χρησιμοποιηθεί στο Linux. Για τη μεταφορά υπάρχοντος κώδικα, το gettimeofday () συνάρτηση μπορεί να χρησιμοποιηθεί αλλά σε νέο κώδικα δεν πρέπει να χρησιμοποιείται. clock_gettime () η συνάρτηση μπορεί να χρησιμοποιηθεί αντί gettimeofday () Το