_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 が次の値の 1 に設定するとエラーになります。

  • 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 は Fcntl.h で定義されているマニフェスト定数または定数の一つ以上の組み合わせ整数式です。

  • _O_APPEND
    すべての書き込み操作の前に EOF が見つかりました。ファイルにポインターを移動します。

  • _O_BINARY
    バイナリ (無変換) モードでファイルを開きます。(バイナリ モードの詳細についてはfopen を参照してください)。

  • _O_CREAT
    書き込み用に新しいファイルを作成し開きます。filename で指定されたファイルがある場合は影響しません。pmode の引数は _O_CREAT が指定されている場合に必要です。

  • _O_CREAT| _O_SHORT_LIVED
    一時できればディスクにフラッシュしないためファイルを作成します。pmode の引数は _O_CREAT が指定されている場合に必要です。

  • _O_CREAT| _O_TEMPORARY
    ファイルを一時ファイルと作成します。; ファイルが最後のファイル記述子が閉じられるとファイルは削除されます。pmode の引数は _O_CREAT が指定されている場合に必要です。

  • _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
    テキスト (変換) モードでファイルを開きます。(詳細についてはテキストとバイナリ モードはI/O がありますfopen を参照してください)。

  • _O_TRUNC
    ファイルを開き長さだけ切り詰めますに ; ファイルが書き込みのアクセス許可が必要です。_O_RDONLY でこのフラグを指定することはできません。_O_TRUNC_O_CREAT を開くと既存のファイルを使用するか新しいファイルを作成します。

    [!メモ]

    _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 が使用されます。_O_UTF8 を使用するとファイルは UTF-8 として常に開き_O_UTF16 を使用するとファイルは既に設定またはバイト順マークに関係なくUTF-16 として常に表示されます。

_open_O_WRONLY|_O_APPEND (モードを追加します。_O_WTEXT) と_O_U16TEXTまたは _O_U8TEXT 呼び出すと最初に読み取ることのファイルを開くと記述BOM をことを書き込み用だけを再開します。読み取りと書き込みのファイルを開くことができない場合は書き込み用にファイルを開きUnicode モードの設定の既定値を使用します。

oflag の引数を形成するために複数の記号定数を使用する場合は定数はビットごとの OR 演算子で結合されます。|).バイナリとテキスト モードの詳細についてはテキストとバイナリ モードはI/O があります を参照してください。

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