_fileno

Gets the file descriptor associated with a stream.

int _fileno( 
   FILE *stream 
);

Parameters

  • stream
    Pointer to the FILE structure.

Return Value

_fileno returns the file descriptor. There is no error return. The result is undefined if stream does not specify an open file. If stream is NULL, _fileno invokes the invalid parameter handler, as described in Parameter Validation. If execution is allowed to continue, this function returns -1 and sets errno to EINVAL.

For more information about these and other error codes, see _doserrno, errno, _sys_errlist, and _sys_nerr.

Notes

In Visual C++ 2005, there is a behavior change. 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. In previous versions, the file descriptor returned was -1. This change allows applications to distinguish this condition from an error.

Remarks

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.

Requirements

Function

Required header

_fileno

<stdio.h>

For more compatibility information, see Compatibility in the Introduction.

Example

// 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

.NET Framework Equivalent

System::IO::FileStream::Handle

See Also

Concepts

Stream I/O

_fdopen, _wfdopen

_filelength, _filelengthi64

fopen, _wfopen

freopen, _wfreopen