Dosya Zamanları
Önceki Dosya Öznitelikleri Sonraki
Dosya Zamanları
Her dosyanın kendisiyle ilgili üç zaman damgası vardır: erişim zamanı, değişiklik zamanı ve öznitelik değişiklik zamanı; bkz. Dosya Öznitelikleri.
Bu zamanların hepsi mutlak zaman biçiminde gösterilen time_t türünde nesnelerdir. Bu veri türü time.h başlık dosyasında tanımlanmıştır. Zaman değerlerinin gösterilmesi ve değiştirilmesi hakkında daha fazla bilgi için Mutlak Zaman bölümüne bakınız.
Bir dosyanın okunması erişim zamanını güncellerken, yazılması değişiklik zamanını günceller. Dosya oluşturulduğu zaman, üç zaman damgasına da dosyanın oluşturulduğu zaman değeri atanır. Ek olarak, yeni girdiyi içeren dizinin erişim ve değişiklik zamanı da güncellenir.
link ile bir dosyaya yeni isim eklenmesi, isim eklenen dosyanın öznitelik değişiklik zamanını günceller ve bu yeni ismi içeren dizinin öznitelik ve içerik değişiklik zamanları da güncellenir. unlink, remove veya rmdir ile dosya isminin silinmesi de aynı alanları etkiler. Bir dosyanın isminin rename ile değiştirilmesi sadece bu değişiklikten etkilenen iki dizinin içerik ve öznitelik değişiklik zamanlarını günceller, ismi değiştirilen dosyada zaman güncellemesi yapılmaz.
Bir dosyanın özniteliklerinin değiştirilmesi (örn, chmod ile), öznitelik değişiklik zamanını günceller.
Öznitelik değişiklik zamanı dışında bir dosyanın değişiklik zamanlarını utime işleviyle doğrudan değiştirebilirsiniz. Bu oluşumu yazılımınızda kullanmak için yazılımınıza utime.h başlık dosyasını dahil etmelisiniz.
struct utimbuf
veri türü
utimbuf yapısı bir dosyaya yeni erişim ve değişiklik zamanlarını belirtmek için utime işlevi ile kullanılır. Şu üyeleri içerir:
time_t actime
Dosyanın erişim zamanı.
time_t modtime
Dosyanın (içerik) değişiklik zamanı.
int utime
(const char           *dosyaismi,
 const struct utimbuf *zamanlar)
işlev
Bu işlev ismi dosyaismi ile belirtilen dosyanın dosya zamanlarını değiştirir.
Eğer zamanlar bir boş gösterici ise, dosyanın erişim ve değişiklik zamanları güncellenir. Aksi takdirde, zaman damgalarına zamanlar ile gösterilen utimbuf yapısının actime ve modtime üyelerindeki değerler atanır.
Her durumda dosyanın öznitelik değişiklik zamanı güncellenir (çünkü dosyanın zaman ile ilgili öznitelikleri değişmiştir).
İşlev başarılı olduğunda 0, aksi takdirde -1 ile döner. Dosya ismi hatalarına ek olarak aşağıdaki errno hata durumları bu işlev için tanımlanmıştır:
EACCES
zamanlar argümanında boş gösterici aktarıldığı durumda bir izin sorunu var. Dosya zaman damgalarını güncelleyebilmek için ya dosyanın sahibi ya da ayrıcalıklı kullanıcı olmalısınız.
ENOENT
Dosya mevcut değil.
EPERM
Eğer zamanlar argümanı boş gösterci değilse ya dosyanın sahibi ya da ayrıcalıklı kullanıcı olmalısınız.
EROFS
Dosya salt-okunur bağlı bir dosya sisteminde bulunuyor.
Her üç zaman damgasınında çözünürlüğü arttıran mikrosaniyelik bir parçası vardır. Bu alanlar 0 ile 999,999 mikrosaniye arasında değer alabilen üç alanla ifade edilir: st_atime_usec, st_mtime_usec ve st_ctime_usec. Bu alanlar bir timeval yapısının tv_usec üyesine karşılıktır; bkz. Yüksek Çözünürlüklü Zaman.
utimes işlevi utime işlevi gibidir, ancak dosya zamanlarının ondalık kısımlarını da belirtebilmenizi sağlar. Bu işlevin prototipi sys/time.h başlık dosyasında bulunur.
int utimes
(const char    *dosyaismi,
 struct timeval zaman[2])
işlev
Bu işlev ismi dosyaismi ile belirtilen dosyanın erişim ve değişiklik zamanlarını değiştirir. Yeni dosya erişim zamanı zaman[0] ile ve yeni değişiklik zamanı zaman[1] ile belirtilir. zaman olarak bir boş gösterici belirtilirse utime işlevi gibi dosyanın erişim ve değişiklik zamanlarını günceller. Bu işlev BSD'den gelmektedir.
İşlevin dönüş değerleri ve hata durumları utime işlevininkilerle aynıdır.
int lutimes
(const char    *dosyaismi,
 struct timeval zaman[2])
işlev
Bu işlev utimes gibi olmakla birlikte sembolik bağları izlemez. utimes işlevi bir sembolik bağın hedefindeki dosyanın erişim ve değişiklik zamanlarını değiştirdiği halde, lutimes işlevi (lstat gibi; Sembolik Bağlar) sembolik bağ dosyasının kendi erişim ve değişiklik zamanlarını değiştirir. Bu işlev BSD'den gelmektedir ve tüm platformlarca desteklenmemektedir (desteklenmiyorsa, işlev ENOSYS hatasıyla başarısız olur).
İşlevin dönüş değerleri ve hata durumları utime işlevininkilerle aynıdır.
int futimes
(int            dosyatanıtıcı,
 struct timeval zaman[2])
işlev
Bu işlev utimes gibidir, ancak argüman olarak dosya ismi yerine bir açık dosya tanıtıcısı alır. Bu işlev BSD'den gelmektedir ve tüm platformlarca desteklenmemektedir (desteklenmiyorsa, işlev ENOSYS hatasıyla başarısız olur).
utimes gibi, futimes işlevi de başarılı olduğunda 0 ile aksi takdirde -1 ile döner. Aşağıdaki errno hata durumları bu işlev için tanımlanmıştır:
EACCES
zamanlar argümanındaa boş gösterici aktarıldığı durumda bir izin sorunu var. Dosya zaman damgalarını güncelleyebilmek için ya dosyanın sahibi ya da ayrıcalıklı kullanıcı olmalısınız.
EBADF
dosyatanıtıcı argümanı geçerli bir dosya tanıtıcı değil.
EPERM
Eğer zamanlar argümanı boş gösterci değilse ya dosyanın sahibi ya da ayrıcalıklı kullanıcı olmalısınız.
EROFS
Dosya salt-okunur bağlı bir dosya sisteminde bulunuyor.
Önceki Üst Ana Başlık Sonraki
Dosya Erişim İzinlerinin Sınanması Başlangıç Dosya Boyu
Bir Linux Kitaplığı Sayfası