open,_wopen
io.h:インデックス への移動
ヘッダーファイル
io.h, fcntl.h
カテゴリ
入出力ルーチン
プロトタイプ
int open(const char *path, int access [, unsigned mode]);
int _wopen(const wchar_t *path, int access [, unsigned mode]);
説明
読み取りまたは書き込みを行うためにファイルを開きます。
open は,path で指定されたファイルを開き,access の値で指定された読み取りまたは書き込みの準備を行います。
特定のモードでファイルを作成するには,グローバル変数 _fmode に代入するか,O_CREAT および O_TRUNC オプションと必要な変換モードを OR で組み合わせて open を呼び出します。
open("XMP",O_CREAT|O_TRUNC|O_BINARY,S_IREAD)
これは,バイナリモードで読み出し専用のファイルを XMP という名前で作成し,このファイルがすでに存在する場合は,その長さを 0 バイトに切り捨てます。
open の場合,access は,次のリストのビットフラグを OR で組み合わせて指定されます。最初のリストからは,フラグを 1 つ(だけ)使用する必要があります。残りのフラグは,任意の組み合わせを使用できます。
これらのシンボル定数は,fcntl.h で定義されています。
O_RDONLY |
読み出し専用で開きます。 |
O_WRONLY |
書き込み専用で開きます。 |
O_RDWR |
読み書き用に開きます。 |
O_NDELAY |
使用されません。UNIX 互換用。 |
O_APPEND |
これが設定されている場合は,書き込みのたびにファイルポインタがファイルの末尾に設定されます。 |
O_CREAT |
ファイルが存在する場合,このフラグの効果はありません。ファイルが存在しない場合は,ファイルが作成され,chmod と同様に mode のビットを使ってファイル属性が設定されます。 |
O_TRUNC |
ファイルが存在する場合は,長さが 0 に切り捨てられます。ファイル属性は変更されません。 |
O_EXCL |
常に O_CREAT と組み合わせて使用されます。ファイルがすでに存在する場合は,エラーが返されます。 |
O_BINARY |
明示的にバイナリモードでファイルを開くことを指定できます。 |
O_TEXT |
明示的にテキストモードでファイルを開くことを指定できます。 |
O_BINARY も O_TEXT も指定されていない場合は,グローバル変数 _fmode で設定されている変換モードでファイルが開かれます。
access の指定で O_CREAT フラグを使用する場合は,sys\stat.h で定義されている次のシンボル定数を mode 引数として open に渡す必要があります。
S_IWRITE |
書き込み許可 |
S_IREAD |
読み取り許可 |
S_IREAD|S_IWRITE |
読み書き許可 |
戻り値
成功した場合,open は,負でない整数(ファイルハンドル)を返します。(ファイル内の現在の位置を指定する)ファイルポインタは,ファイルの先頭に設定されます。
エラーが発生した場合は -1 を返し,グローバル変数 errno に次のいずれかの値が設定されます。
EACCES |
アクセスが許可されない |
EINVACC |
無効なアクセスコード |
EMFILE |
オープンファイルが多すぎる |
ENOENT |
指定されたファイルまたはディレクトリがない |
例
#include <string.h>
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
int main(void)
{
int handle;
char msg[] = "Hello world";
if ((handle = open("TEST.$$$", O_CREAT | O_TEXT)) == -1)
{
perror("Error:");
return 1;
}
write(handle, msg, strlen(msg));
close(handle);
return 0;
}
移植性
POSIX | Win32 | ANSI C | ANSI C++ | |
---|---|---|---|---|
open |
+ |
+ |
||
_wopen |
NT のみ |