ストリームに関連付けられているファイル記述子を取得します。Gets the file descriptor associated with a stream.


int _fileno(
   FILE *stream


FILE 構造体へのポインター。Pointer to the FILE structure.

戻り値Return Value

_filenoはファイル記述子を返します。_fileno returns the file descriptor. エラーの戻り値はありません。There is no error return. ストリームが開いているファイルを指定していない場合、結果は未定義になります。The result is undefined if stream does not specify an open file. Stream がNULLの場合、 _filenoは、「パラメーターの検証」で説明されているように、無効なパラメーターハンドラーを呼び出します。If stream is NULL, _fileno invokes the invalid parameter handler, as described in Parameter Validation. 実行の継続が許可された場合、この関数は -1 を返し、errnoEINVAL に設定します。If execution is allowed to continue, this function returns -1 and sets errno to EINVAL.

エラー コードの詳細については、「_doserrno、errno、_sys_errlist、および _sys_nerr」を参照してください。For more information about these and other error codes, see _doserrno, errno, _sys_errlist, and _sys_nerr.


Stdoutまたはstderrが出力ストリームに関連付けられていない場合 (たとえば、コンソールウィンドウがない Windows アプリケーションで)、返されるファイル記述子は-2 です。If stdout or stderr is not associated with an output stream (for example, in a Windows application without a console window), the file descriptor returned is -2. 以前のバージョンでは、返されるファイル記述子は -1 でした。In previous versions, the file descriptor returned was -1. この変更で、アプリケーションはこの条件をエラーと区別できるようになりました。This change allows applications to distinguish this condition from an error.


_Filenoルーチンは、現在ストリームに関連付けられているファイル記述子を返します。The _fileno routine returns the file descriptor currently associated with stream. このルーチンは、関数とマクロの両方として実装されています。This routine is implemented both as a function and as a macro. 実装の使い分けについては、「関数とマクロの使い分け」を参照してください。For information about choosing either implementation, see Choosing Between Functions and Macros.


関数Function 必須ヘッダーRequired header
_fileno_fileno <stdio.h><stdio.h>

互換性の詳細については、「 互換性」を参照してください。For more compatibility information, see Compatibility.


// crt_fileno.c
// This program uses _fileno to obtain
// the file descriptor for some standard C streams.

#include <stdio.h>

int main( void )
   printf( "The file descriptor for stdin is %d\n", _fileno( stdin ) );
   printf( "The file descriptor for stdout is %d\n", _fileno( stdout ) );
   printf( "The file descriptor for stderr is %d\n", _fileno( stderr ) );
The file descriptor for stdin is 0
The file descriptor for stdout is 1
The file descriptor for stderr is 2

関連項目See also

ストリーム入出力Stream I/O
_fdopen、_wfdopen_fdopen, _wfdopen
_filelength、_filelengthi64_filelength, _filelengthi64
fopen、_wfopenfopen, _wfopen
freopen、_wfreopenfreopen, _wfreopen