_open、_wopen
ファイルを開きます。 セキュリティが強化されたバージョンが使用可能になったので、これらの関数は使用されなくなりました。「_sopen_s、_wsopen_s」を参照してください。
int _open(
const char *filename,
int oflag [,
int pmode]
);
int _wopen(
const wchar_t *filename,
int oflag [,
int pmode]
);
パラメーター
filename
ファイル名。oflag
許可される操作の種類。pmode
アクセス権。
戻り値
これらの関数は、開いたファイルのファイル記述子を返します。 エラーが発生すると -1 を返し、グローバル変数 errno に次のいずれかの値が設定されます。
EACCES
書き込みのために読み取り専用ファイルを開こうとしたか、指定した操作がファイルの共有モードで許可されていないか、または指定したパスがディレクトリです。EEXIST
_O_CREAT_O_EXCLフラグが指定、しかし、filenameが既に存在します。EINVAL
oflag 引数または pmode 引数が無効です。EMFILE
利用できるファイル記述子がありません。開いているファイルが多すぎます。ENOENT
ファイル名またはパス名が見つかりません。
リターン コードの詳細については、「_doserrno、errno、_sys_errlist、および _sys_nerr」を参照してください。
解説
_open関数で指定されたファイルを開きますfilenameと、ファイルの読み取りまたは書き込みで指定された準備oflag。 _wopen 関数は、_open 関数のワイド文字バージョンです。_wopen 関数の引数 filename は、ワイド文字列です。 それ以外では、_wopen と _open の動作は同じです。
汎用テキスト ルーチンのマップ
Tchar.h のルーチン |
_UNICODE および _MBCS が未定義の場合 |
_MBCS が定義されている場合 |
_UNICODE が定義されている場合 |
---|---|---|---|
_topen |
_open |
_open |
_wopen |
oflag整数式は 1 つ以上の次のマニフェスト定数または Fcntl.h で定義された定数の組み合わせから形成されます。
_O_APPEND
すべての書き込み操作の前に、ファイル ポインターをファイルの終端に移動します。_O_BINARY
ファイルをバイナリ (無変換) モードで開きます。 バイナリ モードの詳細については、「fopen、_wfopen」を参照してください。_O_CREAT
書き込み用の新規ファイルを作成して開きます。 filename で指定したファイルが存在する場合は無効です。 _O_CREAT を指定する場合は、pmode 引数が必要です。_O_CREAT| _O_SHORT_LIVED
ファイルを一時ファイルとして作成し、可能な場合はディスクにフラッシュしません。 _O_CREAT を指定する場合は、pmode 引数が必要です。_O_CREAT| _O_TEMPORARY
ファイルを一時ファイルとして作成します。最後のファイル記述子が閉じられると、ファイルは削除されます。 _O_CREAT を指定する場合は、pmode 引数が必要です。_O_CREAT| _O_EXCL
filename で指定されたファイルが存在する場合は、エラー値を返します。 _O_CREAT と共に使用する場合にだけ適用されます。_O_NOINHERIT
共有ファイル記述子の作成を禁止します。_O_RANDOM
キャッシュがディスクからのランダム アクセスに最適化されるように指定します。ただし、ランダム アクセスに限定されるわけではありません。_O_RDONLY
ファイルを読み取り専用で開きます。_O_RDWR または _O_WRONLY を指定した場合、この定数は使用できません。_O_RDWR
ファイルを読み取りと書き込みの両用に開きます。このフラグを _O_RDONLY または _O_WRONLY と共に指定することはできません。_O_SEQUENTIAL
キャッシュがディスクからのシーケンシャル アクセスに最適化されるように指定します。ただし、シーケンシャル アクセスに限定されるわけではありません。_O_TEXT
ファイルをテキスト (変換) モードで開きます。 詳細については、「テキスト モードとバイナリ モードのファイル入出力」および「fopen」を参照してください。_O_TRUNC
ファイルを開き、長さ 0 まで切り捨てます。ファイルには書き込み許可が必要です。 このフラグは、_O_RDONLY と共に指定できません。 _O_CREAT と共に _O_TRUNC を使用すると、既存のファイルが開かれるか、新しいファイルが作成されます。注意
_O_TRUNC フラグを設定すると、指定したファイルの内容が破棄されます。
_O_WRONLY
ファイルを書き込み専用で開きます。_O_RDONLY または _O_RDWR を指定した場合、この定数は使用できません。_O_U16TEXT
ファイルを Unicode UTF-16 モードで開きます。_O_U8TEXT
ファイルを Unicode UTF-8 モードで開きます。_O_WTEXT
ファイルを Unicode モードで開きます。
ファイル アクセス モードを指定するには、_O_RDONLY、_O_RDWR、または _O_WRONLY のいずれかを指定する必要があります。 アクセス モードの既定値はありません。
_O_WTEXT を使用してファイルを読み取り用で開くと、_open はファイルの先頭を読み出し、バイト順マーク (BOM) をチェックします。 BOM がある場合、ファイルは BOM に基づいて UTF-8 または UTF-16LE として処理されます。 BOM がない場合、ファイルは ANSI として処理されます。 _O_WTEXT を使用してファイルを書き込み用に開くと、UTF-16 が使用されます。 以前の設定や BOM に関係なく、_O_UTF8 を使用するとファイルは常に UTF-8 として開かれ、_O_UTF16 を使用するとファイルは常に UTF-16 として開かれます。
_O_WRONLY|_O_APPEND (追加モード) に _O_WTEXT、_O_U16TEXT、_O_U8TEXT のいずれかを組み合わせて指定した場合、_open は、まず、対象のファイルを読み取りおよび書き込みモードで開き、BOM を読み取ってから、書き込み専用モードで開き直します。 読み取りおよび書き込みモードでファイルを開くことができなかった場合は、書き込み専用でファイルを開き、Unicode モード設定の既定値を使用します。
フォームに 2 つ以上のマニフェスト定数が使用、oflag引数は、定数を組み合わせるとビットごとの OR 演算子 (|). バイナリ モードとテキスト モードについては、「テキスト モードとバイナリ モードのファイル入出力」を参照してください。
引数 pmode は、_O_CREAT を指定する場合にだけ必要です。 ファイルが既に存在する場合、pmode は無視されます。 それ以外の場合、pmode はファイル アクセス許可を設定します。この設定は、新しいファイルを初めて閉じるときに行われます。 _open は、アクセス許可を設定する前に、現在のファイルのアクセス許可のマスクを pmode に適用します (詳細については_umask を参照)。 整数式 pmode は、SYS\Stat.h で定義されている次のマニフェスト定数の 1 つまたは両方を含む整数式です。
_S_IREAD
ファイルを読み取り専用に設定します。_S_IWRITE
ファイルへの書き込みを許可します。つまり、ファイルを読み取ることもできます_S_IREAD | _S_IWRITE
ファイルの読み取りおよび書き込みを許可します。
両方の定数を指定する場合は、ビットごとの OR 演算子 (|). Windows NT では、すべてのファイルは、書き込み専用のアクセス許可がないので読み取り可能; したがって、モード**_S_IWRITEと_S_IREAD** | _S_IWRITE同じです。
上記以外の値を指定したかどうかpmode(有効なを指定する場合でもpmodeの他のオペレーティング システム) または以外の値が許可されているoflag値指定、関数がデバッグ モードでアサーションを生成しに記載されているように、無効なパラメーター ハンドラーを呼び出しますパラメーターの検証。 実行の継続が許可された場合、この関数は -1 を返し、errno を EINVAL に設定します。
必要条件
ルーチン |
必須ヘッダー |
オプション ヘッダー |
---|---|---|
_open |
<io.h> |
<fcntl.h>、<sys/types.h>、<sys/stat.h> |
_wopen |
<io.h> または <wchar.h> |
<fcntl.h>、<sys/types.h>、<sys/stat.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
ライブラリ
C ランタイム ライブラリのすべてのバージョン。
使用例
// crt_open.c
// compile with: /W3
/* This program uses _open to open a file
* named CRT_OPEN.C for input and a file named CRT_OPEN.OUT
* for output. The files are then closed.
*/
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>
#include <stdio.h>
int main( void )
{
int fh1, fh2;
fh1 = _open( "CRT_OPEN.C", _O_RDONLY ); // C4996
// Note: _open is deprecated; consider using _sopen_s instead
if( fh1 == -1 )
perror( "Open failed on input file" );
else
{
printf( "Open succeeded on input file\n" );
_close( fh1 );
}
fh2 = _open( "CRT_OPEN.OUT", _O_WRONLY | _O_CREAT, _S_IREAD |
_S_IWRITE ); // C4996
if( fh2 == -1 )
perror( "Open failed on output file" );
else
{
printf( "Open succeeded on output file\n" );
_close( fh2 );
}
}
出力
Open succeeded on input file
Open succeeded on output file
同等の .NET Framework 関数
System::IO::FileStream::FileStream