.\" This manpage is Copyright (C) 1992 Drew Eckhardt; .\" and Copyright (C) 1993 Michael Haardt .\" and Copyright (C) 1993,1994 Ian Jackson .\" and Copyright (C) 2006, 2014 Michael Kerrisk .\" .\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) .\" You may distribute it under the terms of the GNU General .\" Public License. It comes with NO WARRANTY. .\" %%%LICENSE_END .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .\" .\" Japanese Version Copyright (c) 1997 SUTO, Mitsuaki .\" all rights reserved. .\" Translated Thu Jun 26 20:47:26 JST 1997 .\" by SUTO, Mitsuaki .\" Updated & Modified Fri Jan 22 1999 .\" by NAKANO Takeo .\" Updated Fri Sep 13 JST 2000 by Kentaro Shirakata .\" Updated Sun May 23 JST 2004 by Kentaro Shirakata .\" Updated Thu Mar 24 JST 2005 by Kentaro Shirakata .\" Updated Wed Jul 30 JST 2008 by Kentaro Shirakata .\" Updated 2012-05-08, Akihiro MOTOKI .\" Updated 2013-05-01, Akihiro MOTOKI .\" Updated 2013-05-06, Akihiro MOTOKI .\" .TH MKDIR 2 2014\-08\-19 Linux "Linux Programmer's Manual" .SH 名前 mkdir, mkdirat \- ディレクトリを作成する .SH 書式 .nf .\" .B #include \fB#include \fP \fB#include \fP .sp \fBint mkdir(const char *\fP\fIpathname\fP\fB, mode_t \fP\fImode\fP\fB);\fP .sp \fB#include \fP/* AT_* 定数の定義 */ \fB#include \fP .sp \fBint mkdirat(int \fP\fIdirfd\fP\fB, const char *\fP\fIpathname\fP\fB, mode_t \fP\fImode\fP\fB);\fP .fi .sp .in -4n glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): .in .sp \fBmkdirat\fP(): .PD 0 .ad l .RS 4 .TP 4 glibc 2.10 以降: _XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L .TP glibc 2.10 より前: _ATFILE_SOURCE .RE .ad .PD .fi .SH 説明 \fBmkdir\fP() は \fIpathname\fP で示される名前のディレクトリを作成しようとする。 \fImode\fP 引き数は、作成されたディレクトリの許可属性を決定するのに使われる。 この値に、通常通りプロセスの \fIumask\fP による修正が加えられる。 したがって、作成されたディレクトリの許可属性は (\fImode\fP & ~\fIumask\fP & 0777) となる。 作成されたディレクトリのその他のモードビットはオペレーティングシステムに 依存する。Linux の場合は、以下の通りである。 新しく作成されたディレクトリの所有者はプロセスの実効ユーザー ID に設定される。 新たに作成されたディレクトリが含まれる親ディレクトリに set group ID ビットがセットされていたり、ファイルシステムが BSD の グループセマンティクス (\fImount \-o bsdgroups\fP あるいは、同じ意味の \fImount \-o grpid\fP) に従ってマウントされている場合には、 新たに作成されたディレクトリのグループ所有権は親ディレクトリの ものが継承される (親ディレクトリと同じになる)。 それ以外の場合は、グループ所有権はプロセスの実効グループ ID となる。 .\" .\" もし親ディレクトリに set group ID ビットがセットされていれば新しく作成される ディレクトリにも set group ID ビットがセットされる。 .SS mkdirat() \fBmkdirat\fP() システムコールは \fBmkdir\fP() と全く同様に動作するが、以下で説明する点が異なる。 \fIpathname\fP で指定されたパス名が相対パスの場合、このパス名はファイルディスクリプター \fIdirfd\fP が参照するディレクトリに対する相対パスと解釈される (\fBmkdir\fP() に相対パス名を渡した場合のように、呼び出したプロセスのカレントワーキングディレクトリに対する相対パスではない)。 \fIpathname\fP で指定されたパス名が相対パスで、 \fIdirfd\fP が特別な値 \fBAT_FDCWD\fP の場合、 (\fBmkdir\fP() と同様に) \fIpathname\fP は呼び出したプロセスのカレントワーキングディレクトリに対する相対パスと解釈される。 \fIpathname\fP で指定されたパス名が絶対パスの場合、 \fIdirfd\fP は無視される。 .PP \fBmkdirat\fP() の必要性についての説明については \fBopenat\fP(2) を参照。 .SH 返り値 \fBmkdir\fP() と \fBmkdirat\fP() は成功した場合 0 を、失敗した場合 \-1 を返す (また、 \fIerrno\fP がエラーの内容にしたがって適切に設定される)。 .SH エラー .TP \fBEACCES\fP プロセスが親ディレクトリへの書き込み許可を持たない、もしくは \fIpathname\fP 中のディレクトリのどれかに検索許可属性が無い (\fBpath_resolution\fP(7) も参照)。 .TP \fBEDQUOT\fP ディスクブロックか inode がそのファイルシステムのユーザークォータに達していた。 .TP \fBEEXIST\fP \fIpathname\fP が既に存在している(ただしそれがディレクトリであるとは限らない)。 \fIpathname\fP がシンボリックリンクの場合も (その指定先が存在するかどうかに関らず)エラーになる。 .TP \fBEFAULT\fP \fIpathname\fP がアクセス可能なアドレス空間の外を指している。 .TP \fBELOOP\fP \fIpathname\fP を解決するときに、解決すべきシンボリックリンクが多すぎた。 .TP \fBEMLINK\fP 親ディレクトリへのリンク数が \fBLINK_MAX\fP を超えてしまう。 .TP \fBENAMETOOLONG\fP \fIpathname\fP が長すぎる。 .TP \fBENOENT\fP \fIpathname\fP の構成要素のディレクトリのいずれかが存在しないか、 またはリンク先が存在しないシンボリックリンクである。 .TP \fBENOMEM\fP カーネルに十分なメモリーがない。 .TP \fBENOSPC\fP \fIpathname\fP を含むデバイスに新たにディレクトリを作成する空きが無い。 .TP \fBENOSPC\fP もしくはユーザーのディスク quota が使い切られているため、 新たにディレクトリを作成することができない。 .TP \fBENOTDIR\fP \fIpathname\fP のディレクトリ部分が実際にはディレクトリでない。 .TP \fBEPERM\fP \fIpathname\fP を含むファイルシステムがディレクトリの作成をサポートしていない。 .TP \fBEROFS\fP \fIpathname\fP が読み出し専用ファイルシステム上のファイルを指している。 .PP \fBmkdirat\fP() では以下のエラーも発生する。 .TP \fBEBADF\fP \fIdirfd\fP が適切なファイルディスクリプターでない。 .TP \fBENOTDIR\fP \fIpathname\fP が相対パスで、 \fIdirfd\fP がディレクトリ以外のファイルを参照しているファイルディスクリプターである。 .SH バージョン \fBmkdirat\fP() はカーネル 2.6.16 で Linux に追加された。 ライブラリによるサポートはバージョン 2.4 で glibc に追加された。 .SH 準拠 .\" SVr4 documents additional EIO, EMULTIHOP \fBmkdir\fP(): SVr4, BSD, POSIX.1\-2001, POSIX.1\-2008. \fBmkdirat\fP(): POSIX.1\-2008. .SH 注意 Linux では、許可ビット以外で意味を持つのは、 \fBS_ISVTX\fP モードビットだけである。 つまり、Linux では作成されたディレクトリは実際には (\fImode\fP & ~\fIumask\fP & 01777) のモードを持つことになる。 \fBstat\fP(2) を参照のこと。 .PP NFS を実現しているプロトコルには多くの不備が存在し、 それら中には \fBmkdir\fP() に影響を与えるものもある。 .SS "glibc での注意" \fBmkdirat\fP() が利用できない古いカーネルでは、 glibc ラッパー関数は \fBmkdir\fP() を使用するモードにフォールバックする。 \fIpathname\fP が相対パスの場合、 glibc は \fIdirfd\fP 引き数に対応する \fI/proc/self/fd\fP のシンボリックリンクに基づいてパス名を構成する。 .SH 関連項目 \fBmkdir\fP(1), \fBchmod\fP(2), \fBchown\fP(2), \fBmknod\fP(2), \fBmount\fP(2), \fBrmdir\fP(2), \fBstat\fP(2), \fBumask\fP(2), \fBunlink\fP(2), \fBpath_resolution\fP(7) .SH この文書について この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man\-pages/ に書かれている。