C'de Fstat İşlevi

C De Fstat Islevi



fstat() işlevi, o dosyanın tanımlayıcısına bağlı olan bilgileri (bazı dosyalarla ilgili) döndürmek için sistemi çağırır. Bu işlev, 'fildes' olarak da bilinen dosya tanıtıcıyla ilişkili dosya bilgilerini alır ve ardından bu bilgiyi ara belleğin işaret ettiği bellek konumuna yazar. Bu işlevin dönüş türü bir tamsayıdır. Program başarılı bir şekilde yürütülürse “0” değerini döndürür. Aksi takdirde, başarısız yürütme durumunda işleve “-1” döndürür. Bu işlevin yürütme hatası, işlevin dosyalarının dosya için geçersiz bir tanımlayıcıya sahip olup olmadığı, giriş ve çıkış için okuma hatasının dosyadan oluşup oluşmadığı ve bellek konumu (yapısı) gibi bazı özel nedenlerden dolayı olabilir. arabellek, dosya bilgisini yazmak için işaret ediyor, dosya boyutu için yeterli bellek ayrılmamış.

prosedür

Bu makale, dosya bilgilerini almak için fstat() işlevini uygulamak için sıralı sırayı takip eder. Önce bu fonksiyonun söz dizimini, bu fonksiyon için gerekli parametreleri öğreniyoruz. Ardından, fstat() işlevi için bazı örnekleri yürütmek için bu sözdizimini kullanırız.







Sözdizimi

Programın dosya bilgilerine erişimini sağlayan fstat() işlevinin bildirilme yöntemi aşağıdaki satırda belirtilmiştir:



$ #include
$ int durum ( int fildes , yapı durum * meraklı ) ;

Programımızda fonksiyonu çağırmamız gerektiğinde, öncelikle bu fonksiyonu destekleyen başlık dosyalarını “sys/stat.h” olarak import etmemiz gerekiyor. İşlevin dönüş türü her zaman 'int''tir ve parametre, 'int' veri türüyle 'fildes' içerir. Fildes, hakkında bilgi edinmek istediğimiz dosyanın tanımlayıcısıdır. Fonksiyona verilen diğer bir parametre de “buf” işaretçisidir. Dosyayla ilgili verileri depolamak istediğimiz yapıya işaret eden bir 'struct stat' işaretçisidir. Bu, fstat() işlevi için giriş parametrelerinin kısa bir açıklamasıdır.



Örnek

Programımız aracılığıyla herhangi bir / belirli dosya hakkında bilgi almak için önceden belirtilen açıklamayı kullanır ve bir program yürütürüz. Yürütülmesi için bu programı Microsoft Visual Studio C derleyicisine yazıyoruz. Önce bir proje oluşturarak ve ardından Visual Studio'daki C depolarına ekleyerek örnekle başlıyoruz. Projeyi C dosyalarına eklemek için proje ismiyle birlikte “.c”yi dahil edip projenin kaynak dosyasına ekliyoruz. Projenin oluşturulmasından sonraki adım, programda daha sonra kullanabileceğimiz fonksiyonlar için gerekli tüm kütüphaneleri çağırmaktır. Bu yazıda fstat() fonksiyonu örneğini uyguladığımız için “sys/stat.h” başlık dosyasını eklememiz gerekiyor. Dosya bilgisi için dosyanın bulunduğu cihaz tipini bilmemiz gerekiyor. Cihazın veri türünü bilmek için “type” başlığını ekliyoruz. h” programda.





Dosya bilgileri, dosyanın en son açıldığı zamanı ve dosyada yapılan değişikliği içermelidir. Bu zaman arama işlevlerine erişmek için “times. h” ve “fcntl. h” dosya izni işlevleri için başlık. Son başlık “stdio. h” dosyası da programda printf() ve scanf() yöntemlerini çağırmak için programa dahil edilmiştir. Programa dahil edilmesini tartıştığımız başlık dosyaları aşağıdaki gibidir:

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

Daha önce bahsedilen başlık dosyaları programa başarıyla aktarıldıktan sonra, şimdi belirli bir dosya hakkında bilgi almak için programı oluşturuyoruz. Geri dönüş tipine sahip olan fonksiyonu “main” ismiyle “int” olarak ilan ediyoruz. Bu ana fonksiyona bir “char” dizisi bildiririz ve ona bilgisini bilmemiz gereken dosyanın adını atarız. Daha sonra “struct” veri tipi ile bir “stat bilgisi” tanımlıyoruz. Bu yapı, dosya hakkındaki bilgileri depoladığımız bir yerdir.



Daha sonra veri tipi “integer” olan “file_descriptor” isimli başka bir değişken tanımlıyoruz. “if koşulu”nda, dosya için izinleri çağıran “S_IWUSR” ve dizinin adını “create()” işlevine geçirerek, varsa dosya için okuma ve yazma işlemleri için izin istiyoruz. aksi takdirde mevcut veya yeni bir dosya oluşturun. Bu create() işlevini, create() işlevinin değerinin sıfırdan küçük olup olmadığını belirten 'if koşuluna' geçiriyoruz ve ardından dosyanın oluşturulması gerektiğini belirten bir hata oluşturuyor. “file_descriptor” ve “information” ve “dosya bilgilerinin saklandığı yerin adresi” parametreleriyle fstat() sıfıra eşit değilse, dosyanın bilgisi olan fstat() döndürülen değeri görüntüleriz. . Ve bilgileri nitelikler biçiminde yazdırıyoruz, örn. dosyanın saklandığı cihaz kimliği, cihazın Inode numarası, dosyanın koruma modu, kullanıcı kimliği, grup kimliği ve bağlantı numarası (sabit form).

Bu öznitelikleri görüntüledikten sonra deyimlerden çıkıyoruz ve close() yöntemini kullanarak dosyayı kapatıyoruz. Ardından, unlink() yöntemini çağırarak dosyanın bağlantısını kaldırın.

#include
#include
#include
#include
#include

ana ( ) {
karakter dizi [ ] = 'amp.dosyası' ;
yapı istatistik bilgisi ;
int dosya tanımlayıcı ;
eğer ( ( dosya tanımlayıcı = yaptı ( dizi , S_IWUSR ) ) < 0 )
hata ( 'creat() hatası' ) ;
başka {
eğer ( durum ( dosya tanımlayıcı , & bilgi ) != 0 )
hata ( 'fstat() hatası' ) ;
başka {
koyar ( 'fstat() değerleri:' ) ;
baskı ( ' düğüm: %d \n ' , ( int ) bilgi. st_ino ) ;
baskı ( ' device_id: %d \n ' , ( int ) bilgi. st_dev ) ;
baskı ( ' cihaz modu: %08x \n ' , bilgi. st_mode ) ;
baskı ( ' no_of_hard_links: %d \n ' , bilgi. st_nlink ) ;
baskı ( ' u_id: %d \n ' , ( int ) bilgi. st_uid ) ;
baskı ( ' g_id: %d \n ' , ( int ) bilgi. st_gid ) ;
}
kapat ( dosya tanımlayıcı ) ;
bağlantıyı kaldır ( dizi ) ;
}
}

Program önce dosya işlemi için izne erişecek ve daha sonra içindeki verileri okuyacak ve tahsis edilen hafıza konumuna yazacaktır. Dosyadan göstermesi için programa verdiğimiz öznitelikler çıktıda gösterilir.

Çözüm

Dosya bilgilerine erişmek için fstat() fonksiyonunu kullandık. İlk önce fstat() işlevinin sözdizimini, işlevin parametrelerinin tam açıklamasıyla açıkladık. Daha sonra bu fonksiyon için bir program yazdık ve önce dosya sahibimizin iznine ulaştık, sonra dosyayı okuduk ve dosyanın bilgilerinden istediğimiz öznitelikleri görüntüledik. fstat() kavramını anlamanız için elimizden gelenin en iyisini yapmaya çalıştık ve programlarınızda size yardımcı olacağını umuyoruz.