Öncelikle Merhaba. Bu yazımda bir dizin üzerinde işlemler yapacağız. Ufak bir örnek üzerinden yapılan işlemleri açıklayacağız.
İlk olarak dizin üzerinde işlem yapacağımızdan kullanacağımız başlık dosyasını taktim edeyim; #include <dirent.h> Örneğimize geçmeden önce bir klasör içerisinde bulunabilecek verilere bakalım.
- Block Device
- Char Device
- Directory
- Pipe (FIFO)
- Symbolic Link
- Regular File
- Unix Domain Socket
- Unknown
Bir klasör içerisindeki yukarıdaki gruplardan birine ait olan tüm dosyaları sıralayabiliriz. Örneğin Linux cihazımızn /dev/ dizini altında ne kadar Char Device türünde dosya varsa ekrana yazalım.
#include
<stdio.h>
#include
<string.h>
#include
<dirent.h>
int
main(void)
{
DIR
*dir;
struct
dirent *dirent;
dir
= opendir("/dev/");
if
(dir)
{
while
(NULL != (dirent = readdir(dir)))
{
if
(DT_CHR == dirent->d_type)
{
printf(">>
%s \n",
dirent->d_name);
}
}
}
return
0;
}
İlk olarak opendir ile istenilen dizine gittik, daha sonra readdir ile buradaki tüm verileri (dizin, char device, regular file) ayırt etmeden okuduk. Örneğimizde Char Device istendiği için if sogusu içinde DT_CHR ile sadece char device dosya isimlerini ekrana basmış oldu(Not: standart output consol olarak düşünüldü).
Diğer dosya türü sorgusu için <dirent.h> başlık dosyasında tanımlanan makroları kullanabilirsiniz.
DT_BLK Block Device.
DT_CHR Character Device.
DT_DIR Directory(klasör).
DT_FIFO Pipe (FIFO).
DT_LNK Symbolic link.
DT_REG Regular file(sıradan dosyalar, text, zip, odt...)
DT_SOCK This is a UNIX domain socket.
DT_UNKNOWN The file type is unknown
Faydalanacağını düşündüğünüz kişilere iletin, eksik ya da yanlış olduğunu düşündüğünüz yerleri belirtin.
Şimdi Yazmaya Devam ....
Hiç yorum yok:
Yorum Gönder
Son Ütücü