MKDIR
Section: Linux Programmer's Manual (2)
Updated: 2003-12-09
Index
JM Home Page
roff page
名前
mkdir - ディレクトリを作成する
書式
#include <sys/stat.h>
#include <sys/types.h>
int mkdir(const char *pathname, mode_t mode);
説明
mkdir()
は
pathname
で示される名前のディレクトリを作成する。
mode
引き数は、作成されたディレクトリの許可属性を決定するのに使われる。
この値に、通常通りプロセスの
umask
による修正が加えられる。
したがって、作成されたディレクトリの許可属性は
(mode & ~umask & 0777)
となる。
作成されたディレクトリのその他のモードビットはオペレーティングシステムに
依存する。Linux の場合は、以下の通りである。
新しく作成されたディレクトリの所有者はプロセスの実効ユーザID に設定される。
新たに作成されたディレクトリが含まれる親ディレクトリに
set group ID ビットがセットされていたり、ファイルシステムが BSD の
グループセマンティクスに従ってマウントされている場合には、
新たに作成されたディレクトリのグループ所有権は親ディレクトリの
ものが継承される (親ディレクトリと同じになる)。
それ以外の場合は、グループ所有権はプロセスの実効グループID となる。
もし親ディレクトリに set group ID ビットがセットされていれば新しく作成される
ディレクトリにも set group ID ビットがセットされる。
返り値
mkdir()
は成功した場合 0 を、失敗した場合 -1 を返す (また、
errno
がエラーの内容にしたがって適切に設定される)。
エラー
- EACCES
-
プロセスが親ディレクトリへの書き込み許可を持たない。もしくは
pathname
中のディレクトリのどれかに検索許可属性が無い
(path_resolution(7)
も参照)。
- EEXIST
-
pathname
が既に存在している(ただしそれがディレクトリであるとは限らない)。
pathname
がシンボリックリンクの場合も
(その指定先が存在するかどうかに関らず)エラーになる。
- EFAULT
-
pathname
がそのプロセスのアクセス可能なアドレス空間の外を指している。
- ELOOP
-
パス名
pathname
を解決するときに、解決すべきシンボリックリンクが多すぎた。
- ENAMETOOLONG
-
pathname
が長すぎる。
- ENOENT
-
pathname
の構成要素のディレクトリのいずれかが存在しないか、
またはリンク先が存在しないシンボリックリンクである。
- ENOMEM
-
カーネルに、利用できるメモリが不足している。
- ENOSPC
-
pathname
を含むデバイスに新たにディレクトリを作成する空きが無い。
もしくはユーザーのディスク quota が使い切られているため、
新たにディレクトリを作成することができない。
- ENOTDIR
-
pathname
中のディレクトリ部分が実際にはディレクトリでない。
- EPERM
-
pathname
を含むファイルシステムがディレクトリの作成をサポートしていない。
- EROFS
-
pathname
が読み出し専用ファイルシステム上のファイルを指している。
準拠
SVr4, BSD, POSIX.1-2001.
注意
Linux では、許可ビット以外で意味を持つのは、
S_ISVTX
モードビットだけである。
つまり、Linux では作成されたディレクトリは実際には
(mode & ~umask & 01777)
のモードを持つことになる。
stat(2)
を参照のこと。
NFS を実現しているプロトコルには多くの不備が存在し、
それら中には
mkdir()
に影響を与えるものもある。
関連項目
mkdir(1),
chmod(2),
mkdirat(2),
mknod(2),
mount(2),
rmdir(2),
stat(2),
umask(2),
unlink(2),
path_resolution(7)
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- エラー
-
- 準拠
-
- 注意
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 04:31:52 GMT, November 19, 2007