CREAT(2) — NEWS-OS Programmer’s Manual
名称
creat − 新しいファイルを作成する
形式
creat(name, mode)
char ∗name;
解説
open(2)があるため、現在、このインターフェースは、ほとんど使用されていません。
creat は、 name という名前の、 新しいファイルを 作成したり、 既存ファイルを 書き直す準備を します。 name は、 ナルで終わっている文字列のアドレスとして指定されます。 ファイルが存在していない場合、 新しいファイルには、 そのプロセスのモードマスクによって修正された (umask(2) 参照)モード mode が与えられます。 この mode 引数の構成については、 chmod(2) を 参照してください。
ファイルが存在している場合には、 そのファイルのモードと所有者は変更されませんが、 そのファイルは切り捨てられて長さ 0 になります。
さらに、 ファイルは書き込みのためにオープンされ、 そのファイルディスクリプタが返されます。
注意事項
与えられる mode は任意であり、 書き込みを 許す必要はありません。 これは、 過去に簡単な排他的ロックメカニズムを 作るプログラムによって使用されていたもので、 現在は、 O_EXCLオープンモードまたは flock(2) の機能が代わりに使用されています。
リターン値
エラーが発生した場合には、 値 −1 が返されます。 そうでない場合には、 このコールは、 書き込みを 許す、 負ではないディスクリプタを 返します。
エラー
以下に示されている項目のうち、1つが発生した場合には、 creat は失敗し、 ファイルの作成または切り捨ては行われません。
[ENOTDIR] パスプレフィックスの構成要素がディレクトリではないものがある。
[EINVAL] パス名に最上位ビットのセットされたキャラクタが含まれている。 (NEWS-OSでは、このエラーはおきない。)
[ENAMETOOLONG]
パス名の 1構成要素が 255 バイトを 超えている、 またはパス名全体が 1023 バイトを 超えている。
[ENOENT] 指定されたファイルが存在していない。
[ELOOP] パス名の処理で遭遇したシンボリックリンクの数が多すぎる。
[EACCES] パスプレフィックスの構成要素についてサーチパーミッションが 許可されていないものがある。
[EACCES] ファイルが存在せず、 そのファイルが作成されるディレクトリが書き込み可能になっていない。
[EISDIR] そのファイルはディレクトリである。
[EMFILE] 既にオープンされているファイルの数が多すぎる。
[ENFILE] システムファイルテーブルがいっぱいである。
[ENOSPC] 新しいファイルのエントリを 入れるディレクトリのあるファイルシステムにスペースが残されていないために、 そのディレクトリを 拡張することができない。
[ENOSPC] ファイルが作成されるファイルシステムにフリーiノードがない。
[EDQUOT] 新しいファイルのエントリを 入れるディレクトリの存在するファイルシステム内に、 ユーザのディスクブロックの割り当て量がすべて使い果たされているために、 そのディレクトリを 拡張することができない。
[EDQUOT] ファイルが作成されるファイルシステムのそのユーザのiノードの 割り当て量がすべて使い果たされている。
[EROFS] 指定されたファイルが読み取り専用のファイルシステム上にある。
[ENXIO] そのファイルは、 キャラクタ型またはブロック型特殊ファイルであり、 デバイスが存在していない。
[ETXTBSY] そのファイルは、 実行されている純プロシージャ(共有テキスト)ファイルである。
[EIO] ディレクトリエントリの作成中またはiノードの割り当て中に入出力エラーが発生した。
[EFAULT] name が、 そのプロセスの割り当てアドレススペースの外を 指している。
[EOPNOTSUPP]
そのファイルはソケットであった。
関連事項
open(2), write(2), close(2), chmod(2), umask(2)
NEWS-OSRelease 4.1C