我已經開始使用dirent.h庫,並且在我的書中遇到了「struct dirent」structer的一個非常有用的成員,其中struct dirent * p-> d_name。但不幸的是,它沒有說明這種結構的任何其他成員;Dirent結構的成員
我想知道這個結構的成員還有什麼,它們用於什麼?
問候
我已經開始使用dirent.h庫,並且在我的書中遇到了「struct dirent」structer的一個非常有用的成員,其中struct dirent * p-> d_name。但不幸的是,它沒有說明這種結構的任何其他成員;Dirent結構的成員
我想知道這個結構的成員還有什麼,它們用於什麼?
問候
結構,struct dirent
是指目錄條目。
http://www.gnu.org/software/libc/manual/html_node/Directory-Entries.html
在linux中它被定義爲:
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 */
};
參考:man readdir
或者只是看在包括目錄 「dirent.h」。
正如另一個答案中所寫,只有'd_ino'和'd_name'是[POSIX](https://en.wikipedia.org/wiki/POSIX)。其餘的應該避免,或更糟糕地使用,只有當你明白其含義。 –
除了@Binyamin Sharet以上答案:
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
這些不應該使用。它們是特定於實現的,而不是由POSIX定義的。您應該更新您的答案以反映這一點。 –
d_type如何工作? – Naruto
某些配置(通常爲mkfs時間)的某些文件系統(例如ext4,xfs)可以傳遞目錄項(DT_ *符號)的類型(部分或全部)。如果不知道,它們是DT_UNKNOWN。 d_type成員不可移植,但仍然廣泛可用。 –
我假設你在Linux上。在這種情況下,只需閱讀dirent.h手冊頁('man dirent.h')。 –
@NikosC。 '沒有手動輸入dirent.h' –
@ Hi-Angel您錯過了POSIX man-pages軟件包。 (不管它在你的Linux發行版中被稱爲什麼,在我的(Gentoo),它是sys-apps/man-pages-posix)。 –