Dosya ve Dosya Sistemi Durumu Kaynak:

Slides:



Advertisements
Benzer bir sunumlar
JAVA’DA DİZİLER Dr.Galip AYDIN.
Advertisements

Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Algoritma.  Algoritma, belirli bir görevi yerine getiren sonlu sayıdaki işlemler dizisidir.  Başka bir deyişle; bir sorunu çözebilmek için gerekli olan.
SUNU HAZIRLAMA PROGRAMI: powerpoint
PROLOG. Prolog Programlarının özellikleri: - Programming in Logic teriminin kısaltılmasıyla adlandırılmıştır. - Semboller üzerinde çalışma prensibi üzerine.
BM-308 Paralel Programlamaya Giriş Bahar 2016 (2. Sunu) (Yrd. Doç. Dr. Deniz Dal)
BÖLÜM 4 PROGRAMLAMA DİLLERİ. PROGRAMLAMA DİLLERİNDE KULLANILAN VERİ TİPLERİ Bilgisayarda işlenen veriler iki türdür: Sayısal Alfasayısal.
Tane Kavramının Öğretimi (Basamaklandırılmış Yönteme Göre)
BİLGİSAYAR PROGRAMLAMA Ders 11: İşaretçi (Pointer) Kullanımı Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
Örnek 1 Kullanıcının girdiği bir sayının karesini hesaplayan bir program yazınız.
TC Windows Editörü DevC++. KURULUM PROGRAMIN KURULACAĞI YER BURADA BELİRLENİYOR.
9. HAFTA 25 Nisan2016. Fonksiyon M-Dosyaları Fonksiyon dosyaları ilk satırda “function” kelimesi bulunan “.m” uzantısı bulunan dosyalardır. MATLAB içinde.
Bağlama ve Kapsam Kavramları
EQUIZSHOW.
ÖTÖ 451 Okul Yönetiminde Bilgisayar Uygulamaları R. Orçun Madran.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
İbrahim Olgaç PROGRAMLAMA DİLLERİ SUNUMU C#
BSM208 PROGRAMLAMA DİLLERİNİN PRENSİPLERİ Dil Çevrimi (Hafta4) 1.
IP PAKETİ. IP Paketi ● IP protokolü akış şeklinde çalışır. ● İletim katmanı mesajları alır 64K'lık datagramlara ayırır. ● Her datagram ağ üzerinden karşı.
Bölüm 2 C Dilinin Temelleri
Öğr. Gör. Dr. İnanç GÜNEY Adana MYO
BİLGİSAYAR PROGRAMLAMA DERSİ
Mobil Uygulama Entegrasyonu İle
LOGGER PRO ile GRAFİK ÇİZMEK
KDV BEYANNAMESİ / MUHTASAR BEYANNAME / KURUMLAR VERGİSİ BEYANNAMESİ / GEÇİCİ VERGİ BEYANNAMESİ’NDE ORTAK ÖZELLİKLER F5 PENCERESİ Beyannamelerde yer alacak.
EETE233 Mikrodenetleyiciler ArduIno ile Programlama
BÖTE 323: Internet Tabanlı Programlama Dr. Ercan TOP
Vize Sorusu Klavyeden girilen N adet sayıyı List1 nesnesinde gösteren ve bu sayıların toplamını ve ortalamasını Text1 ve Text2 nesnesinde yazdıran.
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
BM-103 Programlamaya Giriş Güz 2016 (7. Sunu)
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
BİLGİSAYAR PROGRAMLAMA Ders 11: İşaretçi (Pointer) Kullanımı
BTEP 203 – İnternet ProgramcIlIğI - I
SUNUM PROGRAMLARI (Bölüm 2)
KELİME İŞLEMCİLER (Bölüm 1)
RESİM VE RESİM DÜZENLEME İŞLEMLERİ
DOSYA BÜYÜKLÜKLERİ İkili Sistem Dosya Büyüklükleri ve Hesaplamalar
Klavye Kullanımı.
Ofis Yazılımları – Veritabanı Programları
KÜMELER HAZIRLAYAN : SELİM ACAR
BMS-301 Kabuk Programlama Güz 2017 (7. Sunu) (Yrd. Doç. Dr. Deniz Dal)
3- VERİ TİPLERİ - OPERATÖRLER Nesne Yönelimli Programlama - i
3.hafta METODLAR.
Bilgisayar Programlamasına ve Veri Analizine Giriş
1. Konfigürasyon oluşturma
Bilgisayar Programlamasına ve Veri Analizine Giriş - VI
BİLGİSAYAR programlama II
BİLGİSAYAR programlama II
NİŞANTAŞI ÜNİVERSİTESİ
TOPLU POSTALAMA İŞLEMİ İÇİN ETİKET OLUŞTURMA VE YAZDIRMA
Bilgisayar II 26 Nisan-7Mayıs Öğr. Gör. Feyza Tekinbaş.
Bilgisayarım Simgesinin Kullanımı Dosyaların Yönetimi
Bilgisayar Bilimi Koşullu Durumlar.
Bölüm 4 Seçme Komutları Koşul İfadesi if Komutu Bileşik Komut
NİŞANTAŞI ÜNİVERSİTESİ
ÇİFT SİLİNDİR İNFİLTROMETRE İLE İNFİLTRASYON TESTLERİ
Fonksiyonlar ve Alt Programlar
6. DÖNGÜ (TEKRARLAMA) DEYİMLERİ
Değerler ve Değişkenler
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
BLM-111 PROGRAMLAMA DİLLERİ I Ders-10 Diziler
NİŞANTAŞI ÜNİVERSİTESİ
MTM216 GÖRSEL PROGRAMLAMA
MTM216 GÖRSEL PROGRAMLAMA
Bölüm 4 Seçme Komutları Koşul İfadesi if Komutu Bileşik Komut
Bilimsel Araştırma Yöntemleri
NİŞANTAŞI ÜNİVERSİTESİ
Sunum transkripti:

Dosya ve Dosya Sistemi Durumu Kaynak:

statstat stat - display file or file system status stat() sistem çağrısı dosyalar hakkında inode içeriğini kullanarak bilgi sağlar. Bunun için dosyası içeren klasöre izin olması gerekir. /usr/include/sys/stat.h

Stat yapısı Terminal ekranından man 2 stat yazılarak int stat(const char *path, struct stat *buf); int fstat(int fd, struct stat *buf); (f -file descriptor ile çalışır) int lstat(const char *path, struct stat *buf); (l-symbolic link) lstat() sembolik (soft) link durumunda dosyaya ait bilgiler yerine link bilgilerini getirir.

Örnek 1: Dosya boyutu ölçen program Komut satırı parametresi olarak belirtilen dosyalardan sıradakini aç Dosyanın sonua kadar gidip karakterleri sayar. Böylece byte cinsinden büyüklüğü verir. Bu örnekte dosya adların ve içeriğini listeleyen stat fonksiyonu benzeri bir program yazılmıştır. Dosya boyutunu ölçmek için dosya içerisinde istenilen konuma ulaşmayı sağlayan lseek() fonksiyonu kullanılmıştır. Program komut satırından belirtilen dosya veya dosyaları açtıktan sonra lseek() ile işaretçiyi dosya sonuna konumlandırarak geriye döndürülen karakter adedinden dosya boyutunu ölçer. Bu örnekte dosya adların ve içeriğini listeleyen stat fonksiyonu benzeri bir program yazılmıştır. Dosya boyutunu ölçmek için dosya içerisinde istenilen konuma ulaşmayı sağlayan lseek() fonksiyonu kullanılmıştır. Program komut satırından belirtilen dosya veya dosyaları açtıktan sonra lseek() ile işaretçiyi dosya sonuna konumlandırarak geriye döndürülen karakter adedinden dosya boyutunu ölçer.

Örnek: Dosya boyutu ölçen program Örnek olarak seçilen lecture.html dosyasının boyutu ölçülmüştür..c ile biten dosya büyüklükleri listelenmiştir.

Örnek: Dosya boyutu ölçen program Örnek program korumalı dosyalara ulaşamıyor. stat() sistem çağrısını kullanan ls korumalı dosya hakkında bilgi veriyor Örnek program korumalı dosyalara ulaşamıyor. stat() sistem çağrısını kullanan ls korumalı dosya hakkında bilgi veriyor

Stat struct yapısı stat() sistem çağrısı stat yapısında veri döndürür: struct stat { dev_t st_dev; /* ID of device containing file */ ino_t st_ino; /* inode number */ mode_t st_mode; /* protection */ nlink_t st_nlink; /* number of hard links */ uid_t st_uid; /* user ID of owner */ gid_t st_gid; /* group ID of owner */ dev_t st_rdev; /* device ID (if special file) */ off_t st_size; /* total size, in bytes */ blksize_t st_blksize; /* blocksize for filesystem I/O */ blkcnt_t st_blocks; /* number of 512B blocks allocated */ time_t st_atime; /* time of last access */ time_t st_mtime; /* time of last modification */ time_t st_ctime; /* time of last status change */ };

Stat yapısı typedef unsigned long ino_t; typedef short dev_t; typedef long off_t; typedef unsigned short uid_t; typedef unsigned short gid_t; typedef unsigned short mode_t; typedef short nlink_t; typedef long time_t;

Örnek 2: stat sistem çağrısı Bir önceki programın doğru çalışması için open ve lseek yerine stat sistem çağrısı kullanılabilir. st_size : dosya boyutu st_ino : inode numarası st_size : dosya boyutu st_ino : inode numarası stat çağrısı ile dosya bilgilerini al stat structure ile dosya bilgileri döndürülüyor

Örnek: stat sistem çağrısı ls2 programının ls gibi parametre kabul etmeden çalışabilmesi için çalışma klasöründeki tüm dosyaların listelenmesi gerekir.

opendir/readdiropendir/readdir Çalışma klasöründeki dosyaların listelenmesi için opendir, readdir, writedir, closedir gibi çağrılarının kullanılması gerekir. Bunlar arka planda open, read, write, close gibi çağrıları kullanır. Bunun için dirent yapısının kullanılması gerekir struct dirent *readdir(DIR *dirp); struct dirent { ino_t d_ino; /* inode number */ off_t d_off; /* not an offset; see NOTES */ unsigned short d_reclen; /* length of this record */ unsigned char d_type; /* type of file; not supported by all filesystem types */ char d_name[256]; /* filename */ };

Örnek 3: klasördeki dosyaların listelenmesi “.” çalışma klasörü d ile belirtilen klasörden sıradaki içeriği oku Klasörü kapat stat çağrısı ile dosya bilgilerini al

Örnek 3: klasördeki dosyaların listelenmesi Listeleme yandaki gibi hizalama yapılarak yazdırılabilir. Doğru hizalama için dosya isimlerinin kaç karakter uzunluğunda olduğunu tespit etmek gerekir. Listeleme yandaki gibi hizalama yapılarak yazdırılabilir. Doğru hizalama için dosya isimlerinin kaç karakter uzunluğunda olduğunu tespit etmek gerekir.

Örnek 4 Dosya isimlerini listeye ekle. En uzun string boyutunu belirle. Dosya isimlerini listeye ekle. En uzun string boyutunu belirle. Çift yönlü bağlı listenin elemanları dll_traverse makro fonksiyonu ile dolaşılıyor. Bu örnekte en uzun dosya adı belirlenip ona göre hizalama yapılıyor. Önceki örnekten farklı olarak dosya isimleri çift yönlü bağlı listeye eklenmiştir. strdup () string duplication dosya ismi için hafızada yer ayırır ve böylece bağlı listeye ekler. Bağlı liste kullanmadan da ls3.c üzerinde değişiklik yaparak aynı işlem gerçekleştirilebilir. printf satırında kullanılan *kaç karakter kullanılacağı ile belirtilir. Ör: makslen=10 ise %10s. Bu örnekte en uzun dosya adı belirlenip ona göre hizalama yapılıyor. Önceki örnekten farklı olarak dosya isimleri çift yönlü bağlı listeye eklenmiştir. strdup () string duplication dosya ismi için hafızada yer ayırır ve böylece bağlı listeye ekler. Bağlı liste kullanmadan da ls3.c üzerinde değişiklik yaparak aynı işlem gerçekleştirilebilir. printf satırında kullanılan *kaç karakter kullanılacağı ile belirtilir. Ör: makslen=10 ise %10s.

Örnek 4 dll_traverse makrosundaki for döngüsü ile ls4.c içerisinde kullanılan aşağıdaki parça tekrarlı olarak çağırılır. Bağlı listeye eklenen her eleman için stat ile dosya durum bilgileri alınır ve ekrana yazdırılır. dll_traverse(tmp, files) { exists = stat(tmp->val.s, &buf); if (exists < 0) { fprintf(stderr, "%s not found\n", tmp->val.s); } else { printf("%*s %10ld\n", -maxlen, tmp->val.s, buf.st_size); }

Örnek 4: ls4.c programını derlerken dllist.h dosyasını kullanmak için derleme anında libfdr.a arşiv dosyasının kullanılması gerekir. ls4.c’yi derlemek için make ile libfdr.a arşiv dosyası oluşturulur ls4.c için object dosya ls4.o oluşturulur gcc -c ls4.c -I libfdr ls4.o ve libfdr.a birlikte derlenir gcc -o ls4 ls4.o libfdr/libfdr.a

Örnek 5: Bu örnekte bağlı liste yerine red- black tree kullanılmıştır. RB tree ile ağaç elemanları sıralanarak kaydedilir. Bu örnekte bağlı liste yerine red- black tree kullanılmıştır. RB tree ile ağaç elemanları sıralanarak kaydedilir.

Örnek 5: Dosya adına benzer şekilde, dosya boyutunu ekrana kaç rakam ile yazdırıcalacağı da max size ile belirlenmiştir. Bu amaçla sprintf ile dosya boyutu ssize ile belirtilen değişkene string olarak yazdırılıp strlen(ssize) ile string uzunluğu ölçülmüştür. Dosya adına benzer şekilde, dosya boyutunu ekrana kaç rakam ile yazdırıcalacağı da max size ile belirlenmiştir. Bu amaçla sprintf ile dosya boyutu ssize ile belirtilen değişkene string olarak yazdırılıp strlen(ssize) ile string uzunluğu ölçülmüştür.

Örnek 5:

Örnek 6: The following POSIX macros are defined to check the file type using the st_mode field: S_ISREG(m) is it a regular file? S_ISDIR(m) directory? S_ISCHR(m) character device? S_ISBLK(m) block device? S_ISFIFO(m) FIFO (named pipe)? S_ISLNK(m) symbolic link? (Not in POSIX ) S_ISSOCK(m) socket? (Not in POSIX )

Örnek 6: The following flags are defined for the st_mode field: S_IFMT bit mask for the file type bit fields S_IFSOCK socket S_IFLNK symbolic link S_IFREG regular file S_IFBLK block device S_IFDIR directory S_IFCHR character device S_IFIFO FIFO S_ISUID set-user-ID bit S_ISGID set-group-ID bit (see below) S_ISVTX sticky bit (see below) S_IRWXU mask for file owner permissions S_IRUSR owner has read permission S_IWUSR owner has write permission S_IXUSR owner has execute permission S_IRWXG mask for group permissions S_IRGRP group has read permission S_IWGRP group has write permission S_IXGRP group has execute permission S_IRWXO mask for permissions for others (not in group) S_IROTH others have read permission S_IWOTH others have write permission S_IXOTH others have execute permission

Örnek 6: Bu örnekte ls –F ile benzer çalışacak şekilde bir listeleme yapılmıştır. Bunun için listelenen elemanın sonuna semboller eklenmiştir. Klasörlerin sonuna: "/" symbolic (soft) link sonuna: Executable sonuna: “*”

Örnek 6: