EN JA
MKDIR(2)
MKDIR(2) FreeBSD System Calls Manual MKDIR(2)

名称

mkdir, mkdiratディレクトリファイルを作成する

ライブラリ

Standard C Library (libc, -lc)

書式

#include < sys/stat.h>

int
mkdir( const char *path, mode_t mode);

int
mkdirat( int fd, const char *path, mode_t mode);

解説

ディレクトリ path が、 mode による指定に呼び出しプロセスの umask(2) で制約を加えたアクセス許可で作成されます。

ディレクトリの所有者 ID は、プロセスの実効ユーザ ID に設定されます。ディレクトリのグループ ID は、そのディレクトリが作成された親ディレクトリのグループ ID に設定されます。

mkdirat() システムコールは、 path が相対パスを指定する場合を除いて、 mkdir() と同等です。この場合、新たに作成されたデバイスノードは、カレントワーキングディレクトリの代わりにファイル記述子 fd に関連しているディレクトリに相対的に作成されます。 mkdirat() が、 fd パラメータの特別な値 AT_FDCWD を渡されるなら、カレントワーキングディレクトリが、使用され、振る舞いは、 mkdir() への呼び出しと同じです。

戻り値

The mkdir() function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

エラー

mkdir() システムコールは次の場合、処理に失敗してディレクトリは作成されません:
[ ENOTDIR]
パスの構成要素中にディレクトリ以外のものが含まれています。
[ ENAMETOOLONG]
パス名の構成要素が 255 文字を越えているか、またはパス名全体が 1023 文字を越えています。
[ ENOENT]
パスの構成要素が存在しません。
[ EACCES]
指定されたパスには、検索が許可されていないディレクトリが含まれています。または、作成するディレクトリの親ディレクトリに対する書み込み権限が拒否されました。
[ ELOOP]
パス名を変換するときに検出されたシンボリックリンクが多すぎます。
[ EPERM]
作成されるディレクトリの親ディレクトリには、不変、または、追加専用フラグが設定されています、詳細については、 chflags(2) マニュアルページを参照してください。
[ EROFS]
指定されたディレクトリは、読み込み専用のファイルシステムにあります。
[ EMLINK]
親ディレクトリがあまりに多くのサブディレクトリを含んでいるので、新しいディレクトリを作成できません。
[ EEXIST]
指定のファイルがすでに存在します。
[ ENOSPC]
新しいディレクトリが作成できません。そのディレクトリを作る容量がファイルシステムに残っていません。
[ ENOSPC]
ディレクトリを作成するファイルシステム上に未使用の inode がありません。
[ EDQUOT]
新しいディレクトリが作成できません。ディレクトリを作るファイルシステム上のディスクブロックのユーザのクォータが枯渇しました。
[ EDQUOT]
ディレクトリを作成中のファイルシステム上のユーザの inode のクォータが枯渇しました。
[ EIO]
ディレクトリエントリの作成中、あるいは inode を割り当て中に入出力エラーが発生しました。
[ EIO]
ファイルシステムに読み書きしている間に入出力エラーが発生しました。
[ EFAULT]
path 引数が、プロセスに割り当てられたアドレス空間の範囲外を指しています。

mkdir() によって返されたエラーに加えて mkdirat() は、次の場合に失敗します:

[ EBADF]
path 引数が、絶対パスを指定していません、そして fd 引数は、 AT_FDCWD でもなく検索のためにオープンされた有効なファイル記述子でもありません。
[ ENOTDIR]
path 引数が、絶対パスではありません、そして fd が、 AT_FDCWD でもなくディレクトリに関連しているファイル記述子でもありません。

規格

mkdir() システムコールは IEEE Std 1003.1-1990 (“POSIX.1”) に適合しています。 mkdirat() システムコールは、The Open Group Extended API Set 2 仕様に適合しています。

歴史

mkdirat() システムコールは FreeBSD 8.0 で登場しました。
June 26, 2008 FreeBSD