2012-10-20 23 views
13

Dirent.h kütüphanesi ile çalışmaya başladım ve kitabımda dirent * p-> d_name olan çok kullanışlı bir "struct dirent" structer üyesiyle karşılaştım. Ancak maalesef bu yapının diğer üyelerini belirtmez;Dirent yapısının üyeleri

Bu yapının üyeleri ve ne için kullanıldığını merak ediyordum?

Selamlar

+2

Linux üzerinde olduğunuzu farz ediyorum. Bu durumda, dirent.h manuel sayfasını ('man dirent.h') okumanız yeterlidir. –

+1

@NikosC. 'Dirent.h' için manuel giriş yok –

+2

@ Hi-Angel POSIX man sayfaları paketi eksik. (Linux dağıtımında adı ne olursa olsun. Benimki (Gentoo), bu sys-apps/man-pages-posix). –

cevap

20

yapısı, struct dirent rehber girişine karşılık gelir. man readdir

Ya da sadece dahil dizindeki "dirent.h" bakın:

struct dirent { 
    ino_t   d_ino;  /* inode number */ 
    off_t   d_off;  /* offset to the next dirent */ 
    unsigned short d_reclen; /* length of this record */ 
    unsigned char d_type;  /* type of file; not supported 
            by all file system types */ 
    char   d_name[256]; /* filename */ 
}; 

bakın:

http://www.gnu.org/software/libc/manual/html_node/Directory-Entries.html

linux yılında olarak tanımlanır.

+2

Başka bir cevapta yazıldığı gibi, sadece "d_ino" ve "d_name" [POSIX] 'dir (https://en.wikipedia.org/wiki/POSIX). Kalanlardan kaçınılmalı veya daha da kötüsü, çok dikkatli kullanılmalı ve sadece anlamlarını anlıyorsanız. –

2

vardır (wikipedia itibaren) sadece iki üye:

  • ino_t d_ino - seri numarası
  • char d_name[] dosya - girişinin adı (NAME_MAX'ın bir boyutu aşamaz)

unix spec da bir göz atın. @Binyamin Sharet yukarıdaki yanıt ek olarak

+1

Başka (uygulama veya sisteme özel) üyeler de olabilir, ancak bunları POSIX taşınabilirlik nedenleriyle kullanmamalısınız. –

1

:

off_t d_off - file offset 
    unsigned short int d_reclen - length of the dirent record 
    unsigned short int d_namlen - length of name 
    unsigned int d_type - type of file 
+3

Bunlar kullanılmamalıdır. Uygulamaya özgüdür ve POSIX tarafından tanımlanmamıştır. Muhtemelen cevabınızı bunu yansıtmak için güncellemeniz gerekir. –

+0

d_type nasıl çalışır? Bazı yapılandırmalarda (genellikle mkfs zamanında) bazı dosya sistemleri (ör. Ext4, xfs) – Naruto

+0

dizin girişlerini (DT_ * sembolleri) (bazıları veya tamamı) verebilir. Bilinmiyorsa, bunlar DT_UNKNOWN'dir. D_type üyesi taşınabilir değildir, ancak yine de yaygın olarak kullanılabilir. –

İlgili konular