【書式】
#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>
int creat(const char *path, int mode);
【解説】
creat() はpathで指定されたファイルをアクセス許可mode(umask(3)参照)で
作成し、書き込みモードでオープンします。
すでにpathで示されるファイルが存在するときにはファイル長は0 となり、
そのファイルの内容は失われます。
creat(path, mode);
は
open(path, O_CREAT | O_TRUNC | O_WRONLY, mode);
と等価です。
modeはpathで指定したファイルが存在しないときに使用され、ファイルの保
護モードを指定します。<sys/stat.h>で定義されている定数を使って次のよ
うに指定します。
S_IWRITE
書き込み可
S_IREAD
読み出し可(リードオンリーファイルを作ります)
S_IREAD | S_IWRITE
読み書き可
DOS窓 ではライトオンリーのファイルは作成できませんので、 S_IWRITEと
S_IREAD | S_IWRITEとは同じ意味となり、いずれもリードライト可能なファ
イルになります。
modeの値は実際に使用される前にumask(3)で設定されている値でマスクされ
ます。詳しくはumask(3)を参照してください。
【リターン値】
正常終了するとファイルハンドル(負でない整数値)を返します。エラーを検
出すると-1を返し、エラーの種類をerrnoにセットします。
【エラー】
EACCES
アクセスが拒否されました( リードオンリーのファイルやディレクトリ
だった)
EMFILE
オープンされているファイルの数が多すぎます
ENOENT
pathの先行するパス名が存在しません
【可搬性】
UNIX, DOS窓
【参照】
open(3), close(3), umask(3)
【バグ】
unixのman(マニュアル)では「creat()はopen()によってもはや『時代遅れ』
となった」 とされています。したがって、creat()のかわりにopen()を使用
するのが望ましいでしょう。
【copyright (c) 安江正樹@東海大学理学部物理学科】