【書式】
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>
int open(const char *path, int oflag [ , int mode ] );
【解説】
open()はpathで示されるファイルをオープンします。パラメタoflag はオー
プンされたファイルに対して許される操作の種類を指定します。 oflagは以
下に示すフラグを論理和したものをあたえます。ただし、最初の3 つのフラ
グはこのうちひとつしか指定できません。
O_RDONLY
読み出しのみ可
O_WRONLY
書き込みのみ可
O_RDWR
読み書き共に可
O_BINARY
バイナリモードでオープンします
O_APPEND
このフラグがセットされていると、書き込みを実行する直前にファイル
ポインタはファイルの最後にシークします
O_CREAT
すでにファイルが存在する場合、このフラグは効果を持ちません。ファ
イルが存在しない場合には新たなファイルを作成します。現在のファイ
ルモード生成マスクの 1になっているビットに対応するmodeのビットが
クリアされたものが、作成されたファイルのモードになります
O_TRUNC
ファイルがすでに存在する場合、ファイル長は0 に切りつめられます。
ファイルモードは変りません
O_EXCL
O_EXCL がO_CREATと共に指定されている場合、すでにファイルが存在し
ているときにはopen()は失敗します
modeはO_CREATを指定して新たなファイルを作成するときに必要となり、 フ
ァイルの保護モードを指定します。<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
アクセスが拒否されました( リードオンリーのファイルを O_WRONLY や
O_RDWRでオープンしようとした。またはpathがディレクトリだった)
EEXIST
O_CREATとO_EXCLが指定されているとき、ファイルがすでに存在します
EINVAL
アクセスコードが無効です
EMFILE
オープンされているファイルの数が多すぎます
ENOENT
O_CREAT が指定されておらず、しかもpathで示されるファイルが存在し
ません
ENOENT
pathの先行するパス名が存在しません
【可搬性】
UNIX, DOS窓
【参照】
close(3), creat(3), umask(3)
【copyright (c) 安江正樹@東海大学理学部物理学科】