Pemrograman C

Cara menggunakan fungsi gettimeofday dalam bahasa C?

Cara menggunakan fungsi gettimeofday dalam bahasa C?
Itu gettimeofday() fungsi mendapatkan waktu jam sistem. Waktu saat ini dinyatakan dalam detik berlalu dan mikrodetik sejak 00:00:00, 1 Januari 1970 (Unix Epoch). Pada artikel ini, kami akan menunjukkan cara menggunakan how gettimeofday() fungsi di Linux. Jadi, mari kita mulai.

Sintaksis

int gettimeofday ( struct timeval *tp ,  struct timezone *tz )

Itu gettimeofday() fungsi didefinisikan dalam sys/waktu.h file header.

Argumen

Fungsi ini membutuhkan dua argumen:

1st argumen menunjuk ke waktu struktur. Itu waktu struktur dinyatakan seperti di bawah ini di sys/waktu.h berkas kepala:

struct    waktu  
time_t        tv_sec ; //digunakan untuk detik
suseconds_t       tv_usec ; //digunakan untuk mikrodetik

Struktur waktu struktur mewakili waktu kalender. Ini memiliki dua anggota:

2dan argumen menunjuk ke zona waktu struktur. Biasanya harus disetel ke NULL karena struktur zona waktu sudah usang. Argumen ini hanya untuk kompatibilitas mundur.

Mengembalikan nilai

Pada kesuksesan, gettimeofday() kembali 0, untuk kegagalan fungsi mengembalikan -1.

Sederhana Dapatkan Waktu dan Cetak

#termasuk
#termasuk
int utama()
struct waktu current_time;
gettimeofday(¤t_time, NULL);
printf("detik : %ld\nmikro detik : %ld",
waktu saat ini.tv_sec, saat_waktu.tv_usec);
kembali 0;

Keluaran:

Sini, sys/waktu.h telah disertakan untuk gettimeofday() fungsi dan struktur waktu. Itu gettimeofday() fungsi mengatur waktu dalam anggota struktur timeval (current_time). tv_sec adalah jumlah detik yang telah berlalu sejak awal since zaman UNIX, pada tengah malam UTC pada 1 Januari 1970 dan tv_usec adalah jumlah mikrodetik tambahan yang telah berlalu dari tv_sec. Jika Anda menjalankan program, Anda akan melihat hasilnya. Setiap kali Anda menjalankan program, outputnya akan berubah.

Kesalahan Argumen NULL

#termasuk
#termasuk
int utama()
 
struct waktu current_time;
gettimeofday(NULL, NULL);
kembali 0;

Keluaran:

Dalam contoh ini menunjukkan bahwa argumen pertama dari gettimeofday() fungsi tidak boleh NULL. Peringatan kompilasi akan muncul jika argumen pertama adalah NULL.

Memformat Contoh Waktu Saat Ini

#termasuk
#termasuk
#termasuk
int utama()
struct tv waktu;
waktu_tt;
struct tm *info;
penyangga karakter[64];
 
gettimeofday(&tv, NULL);
t = tv.tv_detik;
info = waktu setempat(&t);
printf("%s",asctime(info));
strftime (buffer, sizeof buffer, "Hari ini adalah %A, %B %d.\n", informasi);
printf("%s", penyangga);
strftime (buffer, sizeof buffer, "Waktunya adalah %I:%M %p.\n", informasi);
printf("%s", penyangga);
kembali 0;

Keluaran:

Dalam contoh ini menunjukkan cara mencetak Tanggal dan Waktu dalam format yang berbeda. Tidaklah mudah untuk merepresentasikan tanggal dari nilai pengembalian gettimeofday() fungsi . Sini, waktu lokal() dan waktu-waktu() fungsi digunakan untuk mewakili dengan baik nilai kembali dari gettimeofday().

Itu waktu lokal() fungsi mengambil argumen, yang merupakan referensi ke pointer dari tv_sec bidang waktu struktur dan mengembalikan referensi ke pointer a struktur tm obyek.

Itu waktu-waktu() fungsi akan menghasilkan string yang diformat dan dipersonalisasi yang menunjukkan tanggal dan waktu dari struktur tm penunjuk. Penentu format digunakan untuk tampilan yang diformat. Misalnya, format string “%d-%m-%Y %H:%M:%S” menentukan tanggal dan waktu dalam formulir ini:

14-04-2020 13:09:42

Berikut ini adalah penentu konversi, dapat digunakan untuk tampilan berformat:

penentu Berarti
%Sebuah Singkatan nama hari kerja sesuai dengan lokasi saat ini.
%SEBUAH Nama hari kerja sesuai lokasi saat ini.
%b Nama bulan disingkat sesuai lokal sekarang.
%B Nama bulan penuh sesuai lokal sekarang.
%c Representasi tanggal dan waktu yang disukai untuk lokasi saat ini.
%d Sebagai angka desimal untuk hari bulan (kisaran 01 - 31).
%H Menggunakan 24-jam (rentang 00 - 23) ke jam sebagai angka desimal.
%SAYA Menggunakan 12-jam (kisaran 00 - 23) ke jam sebagai angka desimal.
%j Sebagai angka desimal untuk hari dalam setahun (kisaran 001-366).
%m Sebagai angka desimal untuk bulan tersebut (kisaran 01 - 12).
%M Angka desimal menit the.
%p Berdasarkan nilai waktu yang ditentukan, baik 'am' atau 'pm' atau string yang setara untuk lokal saat ini.
%S Bilangan desimal detik.
%x Representasi yang disukai dari tanggal untuk lokal saat ini, tetapi tanpa waktu.
%X Representasi waktu yang disukai untuk lokal saat ini, tetapi tanpa tanggal.
%y Tahun adalah desimal tetapi tidak ada abad (berkisar dari 00 - 99).
%Y Tahunnya desimal termasuk abad.
%Z Zona waktu.

Menggunakan gettimeofday untuk Mengukur Waktu Eksekusi Program

#termasuk
#termasuk
 
int utama()
 
struct waktu mulai, akhir;
gettimeofday(&mulai, NULL);
 
untuk (int i = 0; i <1e5 ; i++)

 
gettimeofday(&end, NULL);
printf("Waktu yang dibutuhkan untuk menghitung sampai 10^5 adalah : %ld mikro detik\n",
((akhir.tv_sec * 1000000 + akhir.tv_usec) -
(Mulailah.tv_sec * 1000000 + mulai.tv_usec)));
kembali 0;

Keluaran:

Contoh ini menunjukkan bahwa bagaimana gettimeofday() fungsi dapat digunakan untuk menghitung waktu eksekusi suatu program.

Kesimpulan

Dengan cara ini, gettimeofday() fungsi mungkin digunakan di Linux. Untuk porting kode yang ada, gettimeofday() fungsi dapat digunakan tetapi dalam kode baru tidak boleh digunakan. jam_gettime()  fungsi dapat digunakan sebagai pengganti gettimeofday().

Aplikasi Pemetaan Gamepad Terbaik untuk Linux
Jika Anda suka bermain game di Linux dengan gamepad alih-alih sistem input keyboard dan mouse biasa, ada beberapa aplikasi yang berguna untuk Anda. Ba...
Alat Berguna untuk Gamer Linux
Jika Anda suka bermain game di Linux, kemungkinan besar Anda telah menggunakan aplikasi dan utilitas seperti Wine, Lutris, dan OBS Studio untuk mening...
Game Remaster HD untuk Linux yang Belum Pernah Rilis Linux Sebelumnya
Banyak pengembang dan penerbit game datang dengan remaster HD dari game lama untuk memperpanjang umur waralaba, harap penggemar meminta kompatibilitas...