_open_osfhandle (Windows)

Format

#include <io.h>
int _open_osfhandle(long h, int flag);

Language Level: Extension
_open_osfhandle maps the API handle into the corresponding run-time handle as defined by h, and returns it.

The oflag is an integer expression formed by combining one or more of the following constants, defined in <fcntl.h>. To specify more than one constant, join the constants with the bitwise OR operator (|); for example, O_CREAT | O_TEXT.

Oflag Meaning
O_APPEND Reposition the file pointer to the end of the file before every write operation.
O_RDONLY Open the file for reading only. If this flag is given, neither O_RDWR nor O_WRONLY can be given.
O_RDWR Open the file for reading and writing. If this flag is given, neither O_RDONLY nor O_WRONLY can be given.
O_WRONLY Open the file for writing only. If this flag is given, neither O_RDONLY nor O_RDWR can be given.
O_BINARY Open the file in binary (untranslated) mode.
O_TEXT Open the file in text (translated) mode.

If neither O_BINARY or O_TEXT is specified, the default will be O_TEXT; it is an error to specify both O_BINARY and O_TEXT. You must specify one of the access mode flags, O_RDONLY, O_WRONLY, or O_RDWR. There is no default.

Return Value
If a run-time handle did map to the passed API handle, _open_osfhandle returns that handle and the oflag argument is ignored. If such a run-time handle does not exist in the run-time environment, _open_osfhandle will create a new handle as defined by oflag.

Example
This example determines the API handle for standard output by calling GetStdHandle, and then maps it into the C run-time handle with _open_osfhandle.

#define WIN32LEAN_AND_MEAN
#include <windows.h>
#include <fcntl.h>
#include <io.h>
#include <string.h>
char s[] = "Hello";
int main(void) {
int h;
h = _open_osfhandle((long)GetStdHandle(STD_OUTPUT_HANDLE), O_WRONLY|O_TEXT);
write(h, s, strlen(s));
return 0;
}


_get_osfhandle
open -- Open File
_sopen -- Open Shared File
creat -- Create New File
fileno -- Determine File Handle
<fcntl.h>
#include