Bagaimana cara menggunakan fungsi gettimeofday dalam bahasa C?

How Use Gettimeofday Function C Language



The gettimeofday () fungsi mendapat masa jam sistem. Waktu semasa dinyatakan dalam detik yang berlalu dan mikrodetik sejak 00:00:00, 1 Januari 1970 (Unix Epoch). Dalam artikel ini, kami akan menunjukkan kepada anda cara menggunakan gettimeofday () berfungsi di Linux. Jadi, mari kita mulakan.

Sintaks

intgettimeofday( strukturjangka masa*bandar, strukturZon masa*tz)

The gettimeofday () fungsi ditakrifkan dalam sys / masa.h fail pengepala.







Hujah

Fungsi ini mengambil dua argumen:



Yang 1sthujah menunjukkan kepada jangka masa struktur. The jangka masa struktur dinyatakan seperti di bawah di sys / masa.h fail pengepala:



strukturjangka masa{
time_t tv_sec; // digunakan selama beberapa saat
suseconds_t tv_usec; // digunakan untuk mikrodetik
}

Struktur jangka waktu struktur mewakili waktu kalendar. Ia mempunyai dua ahli:





  • tv_sec : Ini adalah jumlah detik sejak zaman itu.
  • tv_usec : Ini adalah tambahan mikrodetik setelah pengiraan jumlah detik sejak zaman itu. .

Yang 2ndhujah menunjukkan kepada Zon masa struktur. Ia biasanya ditetapkan ke NULL kerana zon waktu struct usang. Hujah ini hanya untuk keserasian ke belakang.

Nilai pulangan

Pada kejayaan, yang gettimeofday () kembali 0, untuk kegagalan fungsi kembali -1.



Masa dan Cetakan Mudah

#sertakan
#sertakan

intutama() {
strukturtime_ current_time masa;
gettimeofday(&masa_ semasa,BULAN);
printf ('saat:% ld nsaat mikro:% ld ',
masa_ semasa.tv_sec,masa_ semasa.tv_usec);

kembali 0;
}

Pengeluaran:

Di sini, sys / masa.h telah dimasukkan untuk gettimeofday () fungsi dan struktur jangka masa. The gettimeofday () fungsi menetapkan masa dalam anggota struktur timeval (current_time). tv_sec adalah bilangan terpadu detik yang berlalu sejak permulaan Zaman UNIX , pada tengah malam UTC pada 1 Januari 1970 dan tv_usec adalah jumlah mikrodetik tambahan yang berlalu dari tv_sec. Sekiranya anda menjalankan program, anda akan melihat hasilnya. Setiap kali anda menjalankan program, output akan berubah.

Ralat Hujah NULL

#sertakan
#sertakan

intutama() {

strukturtime_ current_time masa;
gettimeofday(BULAN,BULAN);
kembali 0;
}

Pengeluaran:

Dalam contoh ini menunjukkan bahawa hujah pertama dari gettimeofday () fungsi tidak boleh NULL. Amaran kompilasi akan datang sekiranya hujah pertama adalah NULL.

Memformat Contoh Masa Semasa

#sertakan
#sertakan
#sertakan

intutama() {
strukturtv masa;
masa_t t;
strukturtm*maklumat;
charpenyangga[64];

gettimeofday(&tv,BULAN);
t=tv.tv_sec;

maklumat= waktu tempatan (&t);
printf ('% s', waktu waktu (maklumat));
masa strft (penyangga, saizpenyangga, 'Hari ini adalah% A,% B% d. n',maklumat);
printf ('% s',penyangga);
masa strft (penyangga, saizpenyangga, Masa adalah% I:% M% p. n',maklumat);
printf ('% s',penyangga);

kembali 0;
}

Pengeluaran:

Dalam contoh ini menunjukkan cara mencetak Tarikh dan Waktu dalam format yang berbeza. Ini bukanlah suatu yang sangat mudah untuk mewakili tarikh dari nilai pulangan gettimeofday () fungsi. Di sini, waktu tempatan () dan waktu senggang () fungsi digunakan untuk mewakili nilai kembali dengan baik gettimeofday () .

The waktu tempatan () fungsi mengambil argumen, yang merupakan rujukan ke penunjuk dari tv_sec bidang jangka masa struct dan mengembalikan rujukan ke penunjuk a struktur tm objek.

The waktu senggang () fungsi akan menghasilkan rentetan berformat yang diperibadikan yang menunjukkan tarikh dan masa dari struktur tm penunjuk. Penentu format digunakan untuk paparan berformat. Contohnya, rentetan format% d-% m-% Y% H:% M:% S menentukan tarikh dan masa dalam borang ini:

04-14-2020 13:09:42

Berikut adalah penentu penukaran, dapat digunakan untuk paparan berformat:

Penentu Makna
% hingga Singkatan nama hari kerja sesuai dengan tempat sekarang.
% KE Nama hari kerja mengikut lokasi sekarang.
% b Nama bulan yang disingkat mengikut tempat sekarang.
% B Nama bulan penuh mengikut lokasi sekarang.
% c Perwakilan pilihan tarikh dan masa untuk lokasi sekarang.
% d Sebagai nombor perpuluhan untuk hari bulan (julat 01 - 31).
% H Menggunakan 24 jam (jarak 00 - 23) hingga jam sebagai nombor perpuluhan.
% Saya Menggunakan 12 jam (jarak 00 - 23) hingga jam sebagai nombor perpuluhan.
% j Sebagai nombor perpuluhan untuk hari dalam setahun (julat 001-366).
% m Sebagai nombor perpuluhan untuk bulan (julat 01 - 12).
% M Nombor perpuluhan minit.
% p Berdasarkan nilai masa yang ditentukan, sama ada ‘am’ atau ‘pm’ atau rentetan yang setara untuk lokasi semasa.
% S Nombor perpuluhan kedua.
% x Perwakilan pilihan tarikh untuk lokasi semasa, tetapi tanpa masa.
% X Perwakilan pilihan masa untuk lokasi semasa, tetapi tanpa tarikh.
% dan Tahun adalah perpuluhan tetapi tiada abad (antara 00 - 99).
% DAN Tahun adalah perpuluhan termasuk abad.
% DENGAN Zon waktu.

Menggunakan gettimeofday untuk Mengukur Waktu Pelaksanaan Program

#sertakan
#sertakan

intutama() {

strukturpermulaan jangka masa,akhir;
gettimeofday(&mulakan,BULAN);

untuk (inti= 0;i<1e5 ;i++) {
}

gettimeofday(&akhir,BULAN);
printf (Masa yang diambil untuk dikira hingga 10 ^ 5 ialah:% ld mikro saat n',
((akhir.tv_sec * 1000000 +akhir.tv_usec) -
(mulakan.tv_sec * 1000000 +mulakan.tv_usec)));

kembali 0;
}

Pengeluaran:

Contoh ini menunjukkan bahawa bagaimana gettimeofday () fungsi dapat digunakan untuk pengiraan waktu pelaksanaan program.

Kesimpulannya

Dengan cara ini, yang gettimeofday () fungsi mungkin digunakan dalam Linux. Untuk memindahkan kod yang ada, gettimeofday () fungsi boleh digunakan tetapi dalam kod baru tidak boleh digunakan. jam_gettime () fungsi boleh digunakan sebagai ganti gettimeofday () .