表头文件:#include
定义函数:int scandir(const char *dir, struct dirent **namelist, nt (*select) (const struct dirent *), nt (*compar) (const struct dirent **, const struct dirent**));
函数说明:scandir()会扫描参数dir指定的目录文件,经由参数select指定的函数来挑选目录结构至参数namelist数组中,最后再调用参数compar指定的函数来排序namelist数组中的目录数据。每次从目录文件中读取一个目录结构后便将此结构传给参数select所指的函数, select函数若不想要将此目录结构复制到namelist数组就返回0,若select为空指针则代表选择所有的目录结构。scandir()会调用qsort()来排序数据,参数compar则为qsort()的参数,若是要排列目录名称字母则可使用alphasort(). 结构dirent定义请参考readdir()
返回值 :成功则返回复制到namelist数组中的数据结构数目,有错误发生则返回-1
错误代码:ENOMEM 核心内存不足
|
|
下面是更详细的定义,摘自:
This is a structure type used to return information about directory entries. It contains the following fields:
char d_name[]- This is the null-terminated file name component. This is the only field you can count on in all POSIX systems.
ino_t d_fileno- This is the file serial number. For BSD compatibility, you can also refer to this member as
d_ino. In the GNU system and most POSIX systems, for most files this the same as thest_inomember thatstatwill return for the file. See section . unsigned char d_namlen- This is the length of the file name, not including the terminating null character. Its type is
unsigned charbecause that is the integer type of the appropriate size unsigned char d_type- This is the type of the file, possibly unknown. The following constants are defined for its value:
DT_UNKNOWN- The type is unknown. On some systems this is the only value returned.
DT_REG- A regular file.
DT_DIR- A directory.
DT_FIFO- A named pipe, or FIFO. See section .
DT_SOCK- A local-domain socket.
DT_CHR- A character device.
DT_BLK- A block device.
This member is a BSD extension. The symbol
_DIRENT_HAVE_D_TYPEis defined if this member is available. On systems where it is used, it corresponds to the file type bits in thest_modemember ofstruct statbuf. If the value cannot be determine the member value is DT_UNKNOWN. These two macros convert betweend_typevalues andst_modevalues:- Function: int IFTODT (mode_t mode)
- This returns the
d_typevalue corresponding to mode.
- Function: mode_t DTTOIF (int dtype)
- This returns the
st_modevalue corresponding to dtype.
This structure may contain additional members in the future. Their availability is always announced in the compilation environment by a macro names _DIRENT_HAVE_D_xxx where xxx is replaced by the name of the new member. For instance, the member d_reclen available on some systems is announced through the macro _DIRENT_HAVE_D_RECLEN.
When a file has multiple names, each name has its own directory entry. The only way you can tell that the directory entries belong to a single file is that they have the same value for the d_fileno field.