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