_get_osfhandle
指定されたファイル記述子に関連付けられている、オペレーティング システム ファイル ハンドルを取得します。
構文
intptr_t _get_osfhandle(
int fd
);
パラメーター
fd
既存のファイル記述子。
戻り値
有効な場合 fd
は、オペレーティング システム ファイル ハンドルを返します。 それ以外の場合は、「パラメーターの検証」で説明されているように、無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、INVALID_HANDLE_VALUE
(-1) が返されます。 また、無効なファイル ハンドルを示す 、に設定errno
EBADF
されます。 結果が Win32 ファイル ハンドルとして使用されるときに警告を回避するには、それを型に HANDLE
キャストします。
Note
ストリームstderr
stdout
に関連付けられていない場合 stdin
(コンソール ウィンドウのない Windows アプリケーションなど)、これらのストリームのファイル記述子の値は、特殊な値 -2 として返されます_fileno
。 同様に、呼び出しの結果ではなくファイル記述子パラメーターとして 0、1、または 2 を _fileno
使用する場合、 _get_osfhandle
ファイル記述子がストリームに関連付けられていないときに特殊な値 -2 も返され、設定 errno
されません。 ただし、これは有効なファイル ハンドル値ではなく、その値を使用しようとする後続の呼び出しは失敗する可能性があります。
EBADF
やその他のエラー コードについては、「errno
、_doserrno
、_sys_errlist
、および _sys_nerr
」を参照してください。
解説
オペレーティング システム (OS) ファイル ハンドルが取得された _get_osfhandle
ファイルを閉じるには、ファイル記述子を呼び出 _close
します fd
。 この関数の戻り値を呼び出 CloseHandle
すことはありません。 基になる OS ファイル ハンドルはファイル記述子によってfd
所有され、呼び出fd
されたときに_close
閉じられます。 ファイル記述子が FILE *
ストリームによって所有されている場合、その FILE *
ストリームでの fclose
の呼び出しによって、ファイル記述子と基になる OS ファイル ハンドルの両方が閉じられます。 この場合は、ファイル記述子を呼び出 _close
さないでください。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT のグローバル状態」を参照してください。
必要条件
ルーチンによって返される値 | 必須ヘッダー |
---|---|
_get_osfhandle |
<io.h> |
互換性の詳細については、「 Compatibility」を参照してください。
関連項目
ファイル処理
_close
_creat
, _wcreat
_dup
, _dup2
_open
, _wopen
_open_osfhandle
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示