EN JA
SCANDIR(3)
SCANDIR(3) FreeBSD Library Functions Manual SCANDIR(3)

名称

scandir, alphasortディレクトリをスキャンする

ライブラリ

Standard C Library (libc, -lc)

書式

#include < dirent.h>

int
scandir( const char *dirname, struct dirent ***namelist, int (*select)(const struct dirent *), int (*compar)(const struct dirent **, const struct dirent **));

int
alphasort( const struct dirent **d1, const struct dirent **d2);

解説

scandir() 関数は、ディレクトリ dirname を読み込み malloc(3) を使用してディレクトリエントリへのポインタの配列を構築します。それは、配列中のエントリの数を返します。ディレクトリエントリの配列へのポインタは、 namelist によって参照される位置に格納されます。

select 引数は、どのエントリが配列に含められているかを選択する scandir() によって呼び出される、ユーザに供給されるサブルーチンへのポインタです。選択するルーチンは、ディレクトリエントリへのポインタが渡され、ディレクトリエントリが配列に含まれることになっているなら、 0 以外の値を返すべきです。 select が NULL であるなら、すべてのディレクトリエントリが含められます。

compar 引数は、完成した配列をソートするために qsort(3) に渡される、ユーザに供給されるサブルーチンへのポインタです。このポインタが NULL であるなら、配列は、ソートされません。

alphasort() 関数は、 strcoll(3) を使用して配列をアルファベット順にソートするために compar 引数に対して使用することができるルーチンです。

配列の各ポインタと次に配列自体を解放することによって、配列のための割り付けられたメモリを free(3) で解放することができます。

診断

読み込みのためのディレクトリをオープンすることができないか、または malloc(3) がすべてのデータ構造を保持するための十分なメモリを割り付けることができないなら、-1 を返します。

歴史

scandir() と alphasort() 関数は、 4.2BSD で登場しました。
January 3, 2010 FreeBSD