スポンサーリンク

SCANDIR(3) FreeBSD ライブラリ関数マニュアル SCANDIR(3)

名称

scandir, alphasort − ディレクトリを走査する

ライブラリ

標準 C ライブラリ (libc, −lc)

書式

#include <sys/types.h>
#include <dirent.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 を返します。

関連項目

directory(3), malloc(3), qsort(3), dir(5)

歴史

scandir() と alphasort() 関数は 4.2BSD で登場しました。

FreeBSD 10.0 June 4, 1993 FreeBSD 10.0

スポンサーリンク