_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 を返し、errnoEINVAL に設定します。

必要条件

ルーチン

必須ヘッダー

オプション ヘッダー

_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 関数

参照

参照

下位入出力

_chmod、_wchmod

_close

_creat、_wcreat

_dup、_dup2

fopen、_wfopen

_sopen、_wsopen