Manpages

名 前

opendir, fdopendir − デ ィ レ ク ト リ を オ ー プ ン す る

書 式

#include <sys/types.h>
#include <dirent.h>

DIR *opendir(const char *name);
DIR *fdopendir(int
fd);

glibc 向 け の 機 能 検 査 マ ク ロ の 要 件 (feature_test_macros(7) 参 照 ):

fdopendir():

glibc 2.10 以 降 :

_XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L

glibc 2.10 よ り 前 :

_GNU_SOURCE

説 明

opendir() 関 数 は デ ィ レ ク ト リ name に 対 応 す る デ ィ レ ク ト リ ス ト リ ー ム を オ ー プ ン し 、 そ の ス ト リ ー ム へ の ポ イ ン タ ー を 返 す 。 ス ト リ ー ム の 位 置 は デ ィ レ ク ト リ の 先 頭 の エ ン ト リ ー に 設 定 さ れ る 。

fdopendir() 関 数 は opendir() と 同 様 だ が 、 オ ー プ ン 済 み の フ ァ イ ル デ ィ ス ク リ プ タ ー fd に よ り 参 照 さ れ る デ ィ レ ク ト リ に 対 す る デ ィ レ ク ト リ ス ト リ ー ム を 返 す 。 fdopendir() の 呼 び 出 し が 成 功 し た 後 は 、 fd は 実 装 の 内 部 で 使 用 さ れ る 。 ア プ リ ケ ー シ ョ ン は fd を 他 の 場 面 で 使 用 す べ き で は な い 。

返 り 値

関 数 opendir() と fdopendir() は デ ィ レ ク ト リ ス ト リ ー ム へ の ポ イ ン タ ー を 返 す 。 エ ラ ー の 場 合 は 、 NULL が 返 さ れ て 、 errno が 適 切 に 設 定 さ れ る 。

エ ラ ー

EACCES ア ク セ ス 権 限 が な い 。

EBADF

fd が 読 み 出 し 用 に オ ー プ ン さ れ た 、 有 効 な フ ァ イ ル デ ィ ス ク リ プ タ ー で は な い 。

EMFILE プ ロ セ ス が 使 用 中 の フ ァ イ ル デ ィ ス ク リ プ タ ー が 多 す ぎ る 。

ENFILE シ ス テ ム で オ ー プ ン さ れ て い る フ ァ イ ル が 多 す ぎ る 。

ENOENT デ ィ レ ク ト リ が 存 在 し な い か 、 ま た は

name が 空 文 字 列 で あ る 。

ENOMEM 操 作 を 完 了 す る の に 十 分 な メ モ リ ー が な い 。

ENOTDIR

name は デ ィ レ ク ト リ で は な い 。

バ ー ジ ョ ン

fdopendir() は glibc 2.4 以 降 で 利 用 可 能 で あ る 。

準 拠

opendir() は SVr4 と 4.3BSD に 存 在 し 、 POSIX.1−2001 で 規 定 さ れ て い る 。 fdopendir() は POSIX.1−2008 で 規 定 さ れ て い る 。

注 意

デ ィ レ ク ト リ ス ト リ ー ム に 対 応 す る フ ァ イ ル デ ィ ス ク リ プ タ ー は dirfd(3) を 使 用 し て 得 る こ と が で き る 。

opendir() 関 数 は 、 DIR * の 背 後 に あ る フ ァ イ ル デ ィ ス ク リ プ タ ー の close−on−exec フ ラ グ を 設 定 す る 。 fdopendir() 関 数 は 、 フ ァ イ ル デ ィ ス ク リ プ タ ー の close−on−exec フ ラ グ の 設 定 を 変 更 し な い 。 fdopendir() の 呼 び 出 し が 成 功 し た 際 に 、 フ ァ イ ル デ ィ ス ク リ プ タ ー fd の close−on−exec を 設 定 す る か ど う か は 、 POSIX.1−200x で は 規 定 さ れ て い な い 。

関 連 項 目

open(2), closedir(3), dirfd(3), readdir(3), rewinddir(3), scandir(3), seekdir(3), telldir(3)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。