日本-日本語 |
|
|
|
OpenVMS マニュアル |
|
HP OpenVMS
|
目次 | 索引 |
mkdir |
ディレクトリを作成します。
#include <stat.h>int mkdir (const char *dir_spec, mode_t mode); (ISO POSIX-1)
int mkdir (const char *dir_spec, mode_t mode, ...); (HP C Extension)
dir_spec
有効な OpenVMS または UNIX スタイルのディレクトリ指定。デバイス名を含むことができます。次に例を示します。
DBA0:[BAY.WINDOWS] /* OpenVMS */ /dba0/bay/windows /* UNIX style */
この指定は,ノード名,ファイル名,ファイル・タイプ,ファイル・バージョン,またはワイルドカード文字を含むことはできません。同じ制約が,UNIX スタイルのディレクトリ指定にも適用されます。 UNIX スタイルの指定の制約については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1 章を参照してください。
mode
ファイル保護。具体的なファイル保護の情報については,このセクションの chmod関数を参照してください。新しいディレクトリのファイル保護は,mode 引数,プロセスのファイル保護マスク ( umask関数を参照),および親ディレクトリのデフォルトの保護から決定されます。
OpenVMS におけるディレクトリ作成の動作と同様に, mkdirはディレクトリに対して決して削除アクセスを適用しません。削除アクセスを設定する必要があるアプリケーションは, chmodを明示的に呼び出して,書き込み許可を設定するようにしてください。
新しく作成されたディレクトリのファイル保護がどのように設定されるかについては,この関数の説明のセクションを参照してください。
...
以下のオプションの引数を表します。これらの引数は,引数リストの中での位置が固定されており,適当な位置に置くことはできません。unsigned int uic
作成されるディレクトリのオーナを識別する利用者識別コード (UIC)。この引数が 0 の場合, HP C RTL は,作成されたディレクトリに,親ディレクトリの UIC を与えます。この引数が指定されなかった場合, HP C RTL は作成されたディレクトリにユーザの UIC を与えます。このオプションの引数は HP C RTL に固有のものであり,移植性はありません。
unsigned short max_versions
作成されたディレクトリに保持されるファイル・バージョンの数の最大値。システムはディレクトリを自動的にパージして,各ファイルを最高で max_versions 個しか保持しません。
この引数が 0 の場合, HP C RTL はファイル・バージョンの数に上限を設けません。
この引数が指定されなかった場合, HP C RTL は作成されたディレクトリに,親ディレクトリのデフォルトのバージョン制限を設定します。
このオプションの引数は HP C RTL に固有のものであり,移植性はありません。
unsigned short r_v_number
デバイスがボリューム・セットの一部である場合,作成されたディレクトリを配置するボリューム (デバイス)。この引数が指定されなかった場合, HP C RTL は作成されたディレクトリをボリューム・セット内に適当に配置します。このオプションの引数は HP C RTL に固有のものであり,移植性はありません。
dir_spec が,存在しないディレクトリを含んだパスを指定していた場合には,中間のディレクトリも作成されます。 UNIX システムでは,これらの中間ディレクトリは存在していなくてはならず,自動的に作成されることはありません。オプションの引数を 1 つも指定しなかった場合, HP C RTL はディレクトリにユーザの UIC と親ディレクトリのデフォルトのバージョン制限を設定し,ボリューム・セット内で適当にディレクトリを配置します。何らかの引数を指定した場合,uic 引数と max_versions 引数のデフォルト値は設定されません。
注意
UNIX システム・コール関数 umask, mkdir, creat,および openを使って, OpenVMS RMS デフォルト保護を指定してファイルを作成するには, umaskを直接呼び出さないプログラムから, 0777 のファイル保護モード引数を使用して mkdir, creat,および openを呼び出します。これらのデフォルト保護では,ACL やファイルの前のバージョンなどに基づいて,保護が正しく設定されます。vfork/ exec呼び出しを行うプログラムでは,新しいプロセス・イメージは, umaskが呼び出されたかどうかの状態を,呼び出し元のプロセス・イメージから継承します。 umask設定と, umask関数が呼び出されたかどうかの状態は,どちらも属性として継承されます。
mode 引数で指定されるファイル保護は,新しいディレクトリのファイル保護が mode 引数とファイル保護マスクの補数のビット論理積に設定されるように,プロセスのファイル保護マスクによって変更されます。
新しいディレクトリには,ゼロの保護値ビットが親ディレクトリから継承されるような形で,親ディレクトリからデフォルトのファイル保護が継承されます。ただし,親ディレクトリのファイル保護の中の,削除アクセスを示すビットは,新しいディレクトリのファイル保護の中の対応するビットには継承されません。
0 成功を示します。 -1 失敗を示します。
#1 |
---|
umask (0002); /* turn world write access off */ mkdir ("sys$disk:[.parentdir.childdir]", 0222); /* turn write access on */ Parent directory file protection: System:RWD, Owner:RWD, Group:R, World:R |
モード引数と, umaskによって設定されたファイル保護マスクの組み合わせから得られるファイル保護は,(0222) & ~(0002),すなわち 0220 です。この保護に親ディレクトリのデフォルト値が適用されると,新しいディレクトリの保護は次のようになります。
File protection: System:RWD, Owner:RWD, Group:RWD, World:R
#2 |
---|
umask (0000); mkdir ("sys$disk:[.parentdir.childdir]", 0444); /* turn read access on */ Parent directory file protection: System:RWD, Owner:RWD, Group:RWD, World:RWD |
モード引数と, umaskによって設定されたファイル保護マスクの組み合わせから得られるファイル保護は,(0444) & ~(0000),すなわち 0444 です。この保護に親ディレクトリのデフォルト値が適用されると,新しいディレクトリの保護は次のようになります。
File protection: System:RW, Owner:RW, Group:RW, World:RW
削除アクセスは継承されないことに注意してください。
目次 | 索引 |
|