MKDIR(2)

名前
mkdir - ディレクトリを作成する

書式
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>

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

説明
mkdir は pathname で示される名前のディレクトリを作成する。 mode には作成されるディレクトリの許可(permission)を設定する。この設定は通常 通りプロセスの umask によって修正され、作成されたファイルの許可(permission)は (mode & ~umask) となる。 新しく作成されたディレクトリの所有者はプロセスの実効 UID にセットされ る。もしそのファイル(訳注:この場合ディレクトリと考えられる)の入ってい るディレクトリに対して set group id ビットがセットされている場合、また もしファイルシステムが BSD のグループセマンティクスに従ってマウントさ れている場合、新しいディレクトリのグループ所有権はその親ディレクトリの グループ所有権を継承する(親ディレクトリと同じになる)。またそうでなかっ た場合はプロセスの実効 GID の所有となる。 もし親ディレクトリに set group id ビットがセットされていれば新しく作成 されるディレクトリにも set group id ビットがセットされる。

返り値
mkdir は成功した場合 0 を、失敗した場合 -1 を返す(失敗した場合 errno がエラーの内容にしたがってセットされる)。

エラー

EEXIST
    pathname が既に存在している(但しそれがディレクトリであるとは限らない)。

EFAULT
    pathname がユーザのアドレス空間外を指している。

EACCES
    プロセスが親ディレクトリへの書き込み許可を持たない。もしくは pathname 中のディレクトリのどれかに search (execute) 許可(permission)が無い。

ENAMETOOLONG
    pathname が長過ぎる。

ENOENT
    pathname 中で指定されているディレクトリが存在しないか、またはリンク先の無いシン ボリックリンクである。

ENOTDIR
    pathname 中のディレクトリ部分が実際にはディレクトリでない。

ENOMEM
    十分なカーネルメモリが無い。

EROFS
    pathname は読み出し専用ファイルシステム上のファイルを指しているにもかかわらず、 そのファイルに対して書き込みの要求がされている。

ELOOP
    pathname 中に循環シンボリック・リンクが含まれる。例えば、 自分自身を参照するシンボリック・リンクなど。

ENOSPC
    pathname を含むデバイスに新たにディレクトリを作成する領域が無い。もしくはユーザー のディスク quota が使い切られているため新たにディレクトリを作成するこ とができない。

準拠
SVr4, POSIX, BSD, SYSV, X/OPEN。SVr4 には他に EMULTIHOP と ENOLINK エ ラーコードについての記述がある。POSIX.1 には ELOOP についての記述はない。

NFS に基づくプロトコルには多くの不適切な物が存在し、 mkdir に影響を与える。

関連項目
read(2), write(2), fcntl(2), close(2), unlink(2), open(2), mknod(2), stat(2), umask(2), mount(2), socket(2), socket(2), fopen(3).