• linux'te bir programın, belli bir dosya veya dizin üzerinde bir dosya işlemi olduğu zaman sistem tarafından otomatik haberdar edilebilmesini sağlayan bir sistem. bir player'ın monitor ettiği bir dizin içine eklenen dosyaları otomatik olarak library'sine eklemesi veya bir çok program tarafından kullanılan config dosyaları update olduğu zaman programların bu değişiklikten kolayca haberdar edilmesi gibi konularda çok kullanışlıdır. kernel versiyon 2.6.13'den beri mevcuttur.
  • ks. inode notify

    linux işletim sisteminde dizin tabanlı dnotify mekanizmasının yerine geliştirilmiş, inode tabanlı dosya sistemi izleme* mekanizmasıdır.

    inotify_event yapısı içerisindeki name elemanı, bit mask ile tanımlanmış ilgili event'in gerçekleştiği dosyanın ismidir ve null ile sonlandırılmıştır*. yapının len elemanı ise bu dosya isminin uzunluğunu tutmaktadır. dolayısıyla bir grup dosya ya da dizin için inotify mekanizması oluşturulduğunda, oluşan her event için event buffer okunurken gösterici ya da indeksin sabit aralıkta ilerletilmiyor olması eşyanın tabiatı gereği normaldir. zira izlenen her dosya yahut dizin aynı isimde olmayacağı gibi, aynı uzunlukta da olmak zorunda değildir. event buffer içerisinde dolaşırken, sıradaki event'e ilişkin yapıya [sizeof(struct inotify_event) + len] byte sonra erişirsiniz. dolayısıyla linux kernel 2.6.13'den bu yana* var olan bu güzide mekanizmada herhangi bir sorun yoktur. hatta oop'de uygulanan observer pattern'in yapısal* ve prosedürel sistem karşılığı olarak düşünülebilir.

    lakin bu mekanizma, yalnızca dosya sistemi üzerinde işlem yapabilmekte ve çoğu pseudo-filesystem*** üzerinde sağlıklı işlem yapamamaktadır. pipe, socket yahut device file gibi özel dosyalar* üzerinde izleme* işlemi yapabilmek için ise epoll mekanizması yahut select/poll mekanizması kullanılır. epoll ile i/o monitoring hadisesinin güzelliği ise edge triggered veya level triggered olabilmesinde saklıdır.

    not: inotify_event yapısı içerisindeki name elemanı, null terminated string olmasının yanı sıra, mevcut hizalamaya* uygun olacak sayıda null karakteri de tutmaktadır. dolayısıyla len elemanının toplam uzunluğu: "dosya ismi + sonlandırıcı karakter* + hizalama için gerekli null karakter sayısı" kadardır.
hesabın var mı? giriş yap