名 前
mkdir, mkdirat − デ ィ レ ク ト リ を 作 成 す る
書 式
#include
<sys/stat.h>
#include <sys/types.h>
int mkdir(const char *pathname, mode_t mode);
#include
<fcntl.h> /* AT_* 定 数 の
定 義 */
#include <sys/stat.h>
int mkdirat(int dirfd, const char *pathname, mode_t mode);
glibc 向 け の 機 能 検 査 マ ク ロ の 要 件 (feature_test_macros(7) 参 照 ):
mkdirat():
glibc 2.10 以 降 :
_XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L
glibc 2.10 よ り 前 :
_ATFILE_SOURCE
説 明
mkdir() は pathname で 示 さ れ る 名 前 の デ ィ レ ク ト リ を 作 成 し よ う と す る 。
mode 引 き 数 は 、 作 成 さ れ た デ ィ レ ク ト リ の 許 可 属 性 を 決 定 す る の に 使 わ れ る 。 こ の 値 に 、 通 常 通 り プ ロ セ ス の umask に よ る 修 正 が 加 え ら れ る 。 し た が っ て 、 作 成 さ れ た デ ィ レ ク ト リ の 許 可 属 性 は (mode & ~umask & 0777) と な る 。 作 成 さ れ た デ ィ レ ク ト リ の そ の 他 の モ ー ド ビ ッ ト は オ ペ レ ー テ ィ ン グ シ ス テ ム に 依 存 す る 。 Linux の 場 合 は 、 以 下 の 通 り で あ る 。 新 し く 作 成 さ れ た デ ィ レ ク ト リ の 所 有 者 は プ ロ セ ス の 実 効 ユ ー ザ ー ID に 設 定 さ れ る 。 新 た に 作 成 さ れ た デ ィ レ ク ト リ が 含 ま れ る 親 デ ィ レ ク ト リ に set group ID ビ ッ ト が セ ッ ト さ れ て い た り 、 フ ァ イ ル シ ス テ ム が BSD の グ ル ー プ セ マ ン テ ィ ク ス (mount −o bsdgroups あ る い は 、 同 じ 意 味 の mount −o grpid) に 従 っ て マ ウ ン ト さ れ て い る 場 合 に は 、 新 た に 作 成 さ れ た デ ィ レ ク ト リ の グ ル ー プ 所 有 権 は 親 デ ィ レ ク ト リ の も の が 継 承 さ れ る (親 デ ィ レ ク ト リ と 同 じ に な る )。 そ れ 以 外 の 場 合 は 、 グ ル ー プ 所 有 権 は プ ロ セ ス の 実 効 グ ル ー プ ID と な る 。 も し 親 デ ィ レ ク ト リ に set group ID ビ ッ ト が セ ッ ト さ れ て い れ ば 新 し く 作 成 さ れ る デ ィ レ ク ト リ に も set group ID ビ ッ ト が セ ッ ト さ れ る 。
mkdirat()
mkdirat() シ ス テ ム コ
ー ル は mkdir() と 全
く 同 様 に 動 作
す る が 、 以 下
で 説 明 す る 点
が 異 な る 。
pathname で 指 定 さ れ た パ ス 名 が 相 対 パ ス の 場 合 、 こ の パ ス 名 は フ ァ イ ル デ ィ ス ク リ プ タ ー dirfd が 参 照 す る デ ィ レ ク ト リ に 対 す る 相 対 パ ス と 解 釈 さ れ る (mkdir() に 相 対 パ ス 名 を 渡 し た 場 合 の よ う に 、 呼 び 出 し た プ ロ セ ス の カ レ ン ト ワ ー キ ン グ デ ィ レ ク ト リ に 対 す る 相 対 パ ス で は な い )。
pathname で 指 定 さ れ た パ ス 名 が 相 対 パ ス で 、 dirfd が 特 別 な 値 AT_FDCWD の 場 合 、 (mkdir() と 同 様 に ) pathname は 呼 び 出 し た プ ロ セ ス の カ レ ン ト ワ ー キ ン グ デ ィ レ ク ト リ に 対 す る 相 対 パ ス と 解 釈 さ れ る 。
pathname で 指 定 さ れ た パ ス 名 が 絶 対 パ ス の 場 合 、 dirfd は 無 視 さ れ る 。
mkdirat() の 必 要 性 に つ い て の 説 明 に つ い て は openat(2) を 参 照 。
返 り 値
mkdir() と mkdirat() は 成 功 し た 場 合 0 を 、 失 敗 し た 場 合 −1 を 返 す (ま た 、 errno が エ ラ ー の 内 容 に し た が っ て 適 切 に 設 定 さ れ る )。
エ ラ ー
EACCES プ ロ セ ス が 親 デ ィ レ ク ト リ へ の 書 き 込 み 許 可 を 持 た な い 、 も し く は |
pathname 中 の デ ィ レ ク ト リ の ど れ か に 検 索 許 可 属 性 が 無 い (path_resolution(7) も 参 照 )。
EDQUOT デ ィ ス ク ブ ロ ッ ク か |
inode が そ の フ ァ イ ル シ ス テ ム の ユ ー ザ ー ク ォ ー |
タ に 達 し て い た 。
EEXIST |
pathname が 既 に 存 在 し て い る (た だ し そ れ が デ ィ レ ク ト リ で あ る と は 限 ら な い )。 pathname が シ ン ボ リ ッ ク リ ン ク の 場 合 も (そ の 指 定 先 が 存 在 す る か ど う か に 関 ら ず )エ ラ ー に な る 。 | |||||||||||||||||||||||||||||||
EFAULT |
pathname が ア ク セ ス 可 能 な ア ド レ ス 空 間 の 外 を 指 し て い る 。 | |||||||||||||||||||||||||||||||
ELOOP |
pathname を 解 決 す る と き に 、 解 決 す べ き シ ン ボ リ ッ ク リ ン ク が 多 す ぎ た 。 親 デ ィ レ ク ト リ へ の リ ン ク 数 が LINK_MAX を 超 え て し ま う 。 ENAMETOOLONG pathname が 長 す ぎ る 。
カ ー ネ ル に 十 分 な メ モ リ ー が な い 。
|