SCANDIR(3) FreeBSD ライブラリ関数マニュアル SCANDIR(3)
名称
scandir, alphasort − ディレクトリを走査する |
ライブラリ
標準 C ライブラリ (libc, −lc) |
書式
#include <sys/types.h> int |
scandir(const char *dirname, struct dirent ***namelist, int (*select)(struct dirent *), int (*compar)(const void *, const void *)); int |
alphasort(const void *d1, const void *d2); |
解説 |
scandir() 関数はディレクトリ dirname を読み取り、 malloc(3) を使用して ディレクトリエントリを指すポインタの配列を作成します。そして配列内のエン トリの数を返します。ディレクトリエントリの配列を指すポインタは、 namelist が参照する位置に保存されます。 select パラメータは、どのエントリを配列に入れるかを選択するために scandir() によって呼び出される、ユーザ定義サブルーチンを指すポインタで す。選択ルーチンにはディレクトリエントリを指すポインタが渡されます。ま た、ディレクトリエントリを配列に入れる場合は非 0 の値を返さなくてはなりま せん。 select が NULL の場合、すべてのディレクトリエントリが組み入れられ ます。 compar パラメータは、ユーザ定義サブルーチンを指すポインタであり、このサブ ルーチンは完成した配列をソートするために qsort(3) に渡されます。このポイ ンタが NULL の場合、配列はソートされません。 alphasort() 関数は、 compar パラメータに使用できるルーチンで、配列をアル ファベット順にソートします。 配列用に割当てられたメモリを free(3) で割当て解除できます。その場合、配列 内の各ポインタを解放してから、配列自体を解放してください。 |
診断
ディレクトリが読み取り用に開けない場合、または malloc(3) がすべてのデータ 構造を保持するのに十分なメモリを割り当てできない場合は −1 を返します。 |
関連項目
歴史
scandir() と alphasort() 関数は 4.2BSD で登場しました。 FreeBSD 10.0 June 4, 1993 FreeBSD 10.0 |