Dosya Özniteliklerinin Anlamları
Önceki Dosya Öznitelikleri Sonraki
Dosya Özniteliklerinin Anlamları
Bir dosyanın özniteliklerini okuduğunuzda, onlar struct stat denilen bir yapıda gelirler. Bu bölümde özniteliklerin isimleri, veri türleri ve anlamları açıklanacaktır. Bir dosyanın özniteliklerini okuyan işlevleri Bir Dosyanın Özniteliklerinin Okunması bölümünde bulabilirsiniz.
Bu bölümdeki bütün semboller sys/stat.h başlık dosyasında bildirilmiştir.
struct stat
veri türü
stat yapısı bir dosyanın öznitelikleri hakkında bilgi döndürmekte kullanılır. En azından şu üyeleri içerir:
mode_t st_mode
Dosya kipini belirtir. Bu dosya türü bilgisi ile dosya izinlerinin bitlerini içerir.
ino_t st_ino
Dosyanın seri numarası. Bu dosyayı aynı aygıttaki diğer dosyalardan ayırır.
dev_t st_dev
Dosyayı içeren aygıt. st_ino ve st_dev birlikte alındığında dosyayı eşsiz olarak kimliklendirir.
nlink_t st_nlink
Dosyaya sabit bağların sayısı. Bu sayı bu dosya için kaç dizinin girdi içerdiğini gösterir. Sayı hep azalıyorsa, dosyayı açık tutan süreç kalmadığı anda dosya kendisini iptal eder. If the count is ever decremented to zero, then the file itself is discarded as soon as no process still holds it open. Sembolik bağlar toplama dahil değildir.
uid_t st_uid
Dosyanın ait olduğu kullanıcının kullanıcı kimliği. Bkz. Dosya İyeliği.
gid_t st_gid
Dosyanın ait olduğu grubun grup kimliği. Bkz. Dosya İyeliği.
off_t st_size
Normal bir dosya için bayt cinsinden dosya uzunluğu. Aygıt dosyaları için bu alandaki değer anlamlı değildir. Sembolik bağlarda hedef dosya isminin uzunluğudur.
time_t st_atime
Dosyaya son erişim zamanı. Bkz. Dosya Zamanları.
unsigned long int st_atime_usec
Dosyaya son erişim zamanının ondalık kısmı. Bkz. Dosya Zamanları.
time_t st_mtime
Dosya içeriğinin son değişiklik zamanı. Bkz. Dosya Zamanları.
unsigned long int st_mtime_usec
Dosya içeriğinin son değişiklik zamanının ondalık kısmı. Bkz. Dosya Zamanları.
time_t st_ctime
Dosya özniteliklerinin son değişiklik zamanı. Bkz. Dosya Zamanları.
unsigned long int st_ctime_usec
Dosya özniteliklerinin son değişiklik zamanının ondalık kısmı. Bkz. Dosya Zamanları.
blkcnt_t st_blocks
Dosyanın diskte kapladığı alanın 512 baytlık bloklar cinsinden miktarı.
Disk bloklarının sayısı dosya boyutu ile birebir orantılı değildir, bunun iki sebebi vardır: Dosya sistemi bazı blokları dahili kayıtlarını tutmak için kullanabilir; dosya seyrek olabilir--dosya sıfırlarla doldurulmuş "delikler" içerebilir ama bunlar aslında diskte yer kaplamaz.
Bir dosyanın seyrek olup olmadığı bu değeri st_size ile karşılaştırarak yaklaşık olarak söylemek mümkündür:
(st.st_blocks * 512 < st.st_size)
Bu sınama mükemmel değildir çünkü gerçekten seyrek olan bir dosyanın seyrek olduğu bu yöntemle saptanamayabilir. Ama pratik uygulamalar için bu bir sorun değildir.
unsigned int st_blksize
Dosyayı okumak ya da dosyaya yazmak için bayt cinsinden en uygun blok boyu. Bu değeri dosya ile yapacağınız okuma ve yazma işlemleri için ne kadar tampon ayıracağınızı belirlemek için kullanabilirsiniz. (Bu değerin st_blocks ile ilgisi yoktur.)
Dosya boyutlarının 2^63 bayta ulaştığı büyük dosya destekli (LFS) sistemler için bu yapının genişletilmesi gerekir.
struct stat64
veri türü
Bu yapının üyeleri de üye isimleri de struct stat ile aynıdır. Tek fark st_ino, st_size ve st_blocks üyelerinin daha büyük değerleri tutabilmesi için faklı türde olmasıdır.
mode_t st_mode
Dosya kipini belirtir. Bu dosya türü bilgisi ile dosya izinlerinin bitlerini içerir.
ino64_t st_ino
Dosyanın seri numarası. Bu dosyayı aynı aygıttaki diğer dosyalardan ayırır.
dev_t st_dev
Dosyayı içeren aygıt. st_ino ve st_dev birlikte alındığında dosyayı eşsiz olarak kimliklendirir.
nlink_t st_nlink
Dosyaya sabit bağların sayısı. Bu sayı bu dosya için kaç dizinin girdi içerdiğini gösterir. Sayı hep azalıyorsa, dosyayı açık tutan süreç kalmadığı anda dosya kendisini iptal eder. If the count is ever decremented to zero, then the file itself is discarded as soon as no process still holds it open. Sembolik bağlar toplama dahil değildir.
uid_t st_uid
Dosyanın ait olduğu kullanıcının kullanıcı kimliği. Bkz. Dosya İyeliği.
gid_t st_gid
Dosyanın ait olduğu grubun grup kimliği. Bkz. Dosya İyeliği.
off64_t st_size
Normal bir dosya için bayt cinsinden dosya uzunluğu. Aygıt dosyaları için bu alandaki değer anlamlı değildir. Sembolik bağlarda hedef dosya isminin uzunluğudur.
time_t st_atime
Dosyaya son erişim zamanı. Bkz. Dosya Zamanları.
unsigned long int st_atime_usec
Dosyaya son erişim zamanının ondalık kısmı. Bkz. Dosya Zamanları.
time_t st_mtime
Dosya içeriğinin son değişiklik zamanı. Bkz. Dosya Zamanları.
unsigned long int st_mtime_usec
Dosya içeriğinin son değişiklik zamanının ondalık kısmı. Bkz. Dosya Zamanları.
time_t st_ctime
Dosya özniteliklerinin son değişiklik zamanı. Bkz. Dosya Zamanları.
unsigned long int st_ctime_usec
Dosya özniteliklerinin son değişiklik zamanının ondalık kısmı. Bkz. Dosya Zamanları.
blkcnt64_t st_blocks
Dosyanın diskte kapladığı alanın 512 baytlık bloklar cinsinden miktarı.
unsigned int st_blksize
Dosyayı okumak ya da dosyaya yazmak için bayt cinsinden en uygun blok boyu. Bu değeri dosya ile yapacağınız okuma ve yazma işlemleri için ne kadar tampon ayıracağınızı belirlemek için kullanabilirsiniz. (Bu değerin st_blocks ile ilgisi yoktur.)
Bazı dosya özniteliklerinin kendilerine özel veri türleri vardır. (Aslında hepsi bildiğiniz tamsayı veri türlerinin karşılığıdır.) Bu veri türleri sys/types.h ve sys/stat.h başlık dosyalarında tanımlanmıştır. Aşağıda bunların bir listesini bulacaksınız.
mode_t
veri türü
Dosya kiplerini göstermekte kullanılan tamsayı veri türü. GNU sisteminde unsigned int'e eşdeğerdir.
ino_t
veri türü
Dosya seri numarasını (Bunlara kimi zaman dosya indisi dendiği de olur) göstermekte kullanılan tamsayı veri türü. GNU sisteminde unsigned long int'e eşdeğerdir.
Kaynakların _FILE_OFFSET_BITS == 64 ile derlendiği sistemlerde bu tür ino64_t ile eşdeğerdir.
ino64_t
veri türü
LFS desteği olan sistemlerde dosya seri numarasını göstermekte kullanılan tamsayı veri türü. GNU sisteminde unsigned long long int'e eşdeğerdir.
Kaynakların _FILE_OFFSET_BITS == 64 ile derlendiği sistemlerde bu tür ino_t ismiyle bulunur.
dev_t
veri türü
Dosyayı içeren aygıtı göstermekte kullanılan tamsayı veri türü. GNU sisteminde int'e eşdeğerdir.
nlink_t
veri türü
Dosya bağlarının sayısını göstermekte kullanılan tamsayı veri türü. GNU sisteminde unsigned short int'e eşdeğerdir.
blkcnt_t
veri türü
Blok sayısını göstermekte kullanılan tamsayı veri türü. GNU sisteminde unsigned long int'e eşdeğerdir.
Kaynakların _FILE_OFFSET_BITS == 64 ile derlendiği sistemlerde bu tür blkcnt64_t ile eşdeğerdir.
blkcnt64_t
veri türü
LFS desteği olan sistemlerde blok sayısını göstermekte kullanılan tamsayı veri türü. GNU sisteminde unsigned long long int'e eşdeğerdir.
Kaynakların _FILE_OFFSET_BITS == 64 ile derlendiği sistemlerde bu tür blkcnt_t ismiyle bulunur.
Önceki Üst Ana Başlık Sonraki
Dosya Öznitelikleri Başlangıç Bir Dosyanın Özniteliklerinin Okunması
Bir Linux Kitaplığı Sayfası