Fungsi Fstat dalam C

Fungsi Fstat Dalam C



Fungsi fstat() memanggil sistem untuk mengembalikan maklumat (mengenai beberapa fail) yang bergantung pada deskriptor fail tersebut. Fungsi ini mendapatkan maklumat untuk fail yang dikaitkan dengan deskriptor fail yang juga dikenali sebagai 'fildes' dan kemudian menulis maklumat ini dalam lokasi memori di mana penimbal ditunjuk. Jenis pengembalian fungsi ini ialah integer. Ia mengembalikan nilai '0' jika program berjaya dilaksanakan. Jika tidak, ia mengembalikan '-1' kepada fungsi sekiranya pelaksanaan gagal. Ralat pelaksanaan untuk fungsi ini boleh disebabkan oleh beberapa sebab tertentu seperti jika fildes fungsi mempunyai deskriptor yang tidak sah untuk fail, jika ralat bacaan untuk input dan output berlaku daripada fail, dan jika lokasi memori (struktur) di mana penimbal menunjuk untuk menulis maklumat fail tidak mempunyai memori yang diperuntukkan yang mencukupi untuk saiz fail.

Prosedur

Artikel ini mengikuti urutan berurutan untuk melaksanakan fungsi fstat() untuk mendapatkan maklumat fail. Kami mula-mula mempelajari sintaks untuk fungsi ini, parameter yang diperlukan untuk fungsi ini. Kemudian, kami menggunakan sintaks ini untuk melaksanakan beberapa contoh bagi fungsi fstat().







Sintaks

Kaedah untuk mengisytiharkan fungsi fstat() yang membolehkan akses program kepada maklumat fail disebut dalam baris berikut:



$ #include
$ int negeri ( int faildes , struct stat * buf ) ;

Setiap kali kita perlu memanggil fungsi dalam program kita, kita perlu mengimport fail pengepala terlebih dahulu yang menyokong fungsi ini sebagai 'sys/ stat.h'. Jenis pulangan untuk fungsi sentiasa 'int' dan parameter termasuk 'fildes' dengan jenis data 'int'. Fildes ialah deskriptor untuk fail yang ingin kami ketahui maklumatnya. Parameter lain yang diberikan kepada fungsi ialah penunjuk 'buf'. Ia ialah penunjuk 'stat struct' yang menghala ke arah struktur tempat kami ingin menyimpan data tentang fail. Ini ialah penerangan ringkas tentang parameter input untuk fungsi fstat().



Contoh

Kami menggunakan penerangan yang sering disebut dan melaksanakan program untuk mendapatkan maklumat tentang mana-mana / fail tertentu melalui program kami. Kami menulis program ini dalam pengkompil Microsoft Visual Studio C untuk pelaksanaan. Kita mulakan dengan contoh dengan mencipta projek dahulu dan kemudian menambahkannya ke repositori C dalam Visual Studio. Untuk menambah projek pada fail C, kami menyertakan '.c' dengan nama projek dan menambahnya pada fail sumber projek. Langkah seterusnya selepas penciptaan projek adalah untuk memanggil semua perpustakaan yang diperlukan untuk fungsi yang mungkin kami gunakan kemudian dalam program. Memandangkan kami melaksanakan contoh untuk fungsi fstat() dalam artikel ini, kami perlu memasukkan fail pengepala 'sys/ stat.h '. Untuk maklumat fail, kita perlu mengetahui jenis peranti di mana fail itu wujud. Untuk mengetahui jenis data untuk peranti, kami menyertakan tajuk 'jenis. h” dalam program tersebut.





Maklumat fail mesti termasuk masa kali terakhir fail dibuka dan pengubahsuaian yang dibuat di dalamnya. Untuk mengakses fungsi panggilan masa ini, kami menambah fail pengepala 'times. h' dan 'fcntl. h” untuk fungsi kebenaran fail. Tajuk terakhir 'stdio. h” juga disertakan dalam atur cara untuk memanggil kaedah printf() dan scanf() dalam atur cara. Fail pengepala yang kami bincangkan untuk dimasukkan ke dalam program adalah seperti berikut:

$ #include
$ #include
$ #include
$ #include
$ #include

Selepas fail pengepala yang disebut sebelum ini berjaya diimport ke dalam program, kami kini membina program untuk mendapatkan maklumat tentang fail tertentu. Kami mengisytiharkan fungsi yang mempunyai jenis pemulangan sebagai 'int' dengan nama 'utama'. Dalam fungsi utama ini, kami mengisytiharkan tatasusunan 'char' dan memberikannya nama fail yang kami perlu tahu maklumatnya. Kemudian, kami mentakrifkan 'maklumat statistik' dengan jenis data 'struct'. Struktur ini ialah tempat di mana kami menyimpan maklumat tentang fail.



Kemudian, kami mentakrifkan pembolehubah lain dengan nama 'file_descriptor' dengan jenis data sebagai 'integer'. Dalam keadaan 'jika', kami meminta kebenaran untuk operasi baca dan tulis untuk fail jika ia wujud, menghantar 'S_IWUSR' dan nama tatasusunan kepada fungsi 'create()' yang meminta kebenaran untuk fail jika ia wujud atau cipta fail baharu sebaliknya. Kami menghantar fungsi create() ini kepada “if condition” yang menyatakan jika nilai fungsi create() kurang daripada sifar kemudian mencipta ralat yang fail itu perlu dibuat. Jika fstat() dengan parameter sebagai 'file_descriptor' dan 'maklumat' dan 'alamat lokasi di mana maklumat fail disimpan' tidak sama dengan sifar, kami memaparkan nilai yang dikembalikan fstat() iaitu maklumat fail . Dan kami mencetak maklumat dalam bentuk atribut, mis. id peranti tempat fail disimpan, nombor Inode peranti, mod perlindungan fail, id pengguna, id kumpulan dan nombor pautan (bentuk keras).

Selepas memaparkan atribut ini, kami keluar daripada pernyataan dan menutup fail menggunakan kaedah close(). Kemudian, nyahpaut fail dengan memanggil kaedah nyahpaut().

#include
#include
#include
#include
#include

utama ( ) {
char tatasusunan [ ] = 'amp.file' ;
struct maklumat statistik ;
int deskriptor fail ;
jika ( ( deskriptor fail = dibuat ( tatasusunan , S_IWUSR ) ) < 0 )
kesalahan ( 'creat() error' ) ;
lain {
jika ( negeri ( deskriptor fail , & maklumat ) != 0 )
kesalahan ( 'ralat fstat()' ) ;
lain {
meletakkan ( 'nilai fstat():' ) ;
printf ( ' inode: %d \n ' , ( int ) info. st_ino ) ;
printf ( ' id_peranti: %d \n ' , ( int ) info. st_dev ) ;
printf ( ' mod peranti: %08x \n ' , info. st_mode ) ;
printf ( ' no_of_hard_links: %d \n ' , info. st_nlink ) ;
printf ( ' u_id: %d \n ' , ( int ) info. st_uid ) ;
printf ( ' g_id: %d \n ' , ( int ) info. st_gid ) ;
}
dekat ( deskriptor fail ) ;
nyahpaut ( tatasusunan ) ;
}
}

Program ini mula-mula akan mengakses kebenaran untuk operasi fail dan kemudian membaca data di dalamnya dan menulisnya di lokasi memori yang diperuntukkan. Atribut yang kami berikan kepada program untuk dipaparkan daripada fail ditunjukkan dalam output.

Kesimpulan

Kami menggunakan fungsi fstat() untuk mengakses maklumat fail. Kami mula-mula mempelajari sintaks untuk fungsi fstat() yang dijelaskan dengan penerangan lengkap parameter fungsi tersebut. Kemudian, kami menulis program untuk fungsi ini di mana kami mula-mula mengakses kebenaran pemilik fail kami dan kemudian membaca fail dan memaparkan atribut yang kami mahu daripada maklumat fail. Kami cuba yang terbaik dalam membolehkan anda memahami konsep fstat() dan kami berharap ia akan membantu anda dalam program anda.