次の方法で共有


_open_osfhandle

C ランタイム ファイル記述子を既存のオペレーティング システム ファイル ハンドルに関連付けます。

構文

int _open_osfhandle (
   intptr_t osfhandle,
   int flags
);

パラメーター

osfhandle
オペレーティング システム ファイル ハンドル。

flags
許可される操作の種類。

戻り値

正常に終了した場合、_open_osfhandle は C ランタイム ファイル記述子を返します。 それ以外のときは -1 が返されます。

解説

_open_osfhandle関数は、C ランタイム ファイル記述子を割り当てます。 このファイル記述子は、 osfhandleで指定されたオペレーティング システム ファイル ハンドルに関連付けられます。 コンパイラの警告を回避するには、 osfhandle 引数を HANDLE から intptr_tにキャストします。 flags 引数は、<fcntl.h> で定義された 1 つ以上のマニフェスト定数で構成された整数式です。 ビットごとの "OR" 演算子 (|) を使用すると、2 つ以上のマニフェスト定数を組み合わせて flags 引数を形成できます。

次のマニフェスト定数は <fcntl.h> で定義されます。

定数 説明
_O_APPEND 書き込み操作の前に、毎回、ファイル ポインターをファイルの末尾に位置指定します。
_O_RDONLY 読み取り専用でファイルを開きます。
_O_TEXT ANSI テキスト (翻訳済み) モードでファイルを開きます。
_O_WTEXT Unicode (UTF-16 に変換) モードでファイルを開きます。

_open_osfhandle呼び出しは、Win32 ファイル ハンドルの所有権をファイル記述子に転送します。 _open_osfhandle を使用して開いたファイルを閉じるには、_close を呼び出します。 基になる OS ファイル ハンドルも、 _closeの呼び出しによって閉じられます。 元のハンドルで Win32 関数 CloseHandle を呼び出さないでください。 ファイル記述子が FILE * ストリームによって所有されている場合、 fclose の呼び出しによって、ファイル記述子と基になるハンドルの両方が閉じられます。 この場合は、ファイル記述子で _close を呼び出したり、元のハンドルで CloseHandle したりしないでください。

既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。

要件

ルーチンによって返される値 必須ヘッダー
_open_osfhandle <io.h>

互換性の詳細については、「 Compatibility」を参照してください。

関連項目

ファイル処理
_get_osfhandle