_get_osfhandle
Pobiera uchwyt plików systemu operacyjnego skojarzony z określonym deskryptorem plików.
Składnia
intptr_t _get_osfhandle(
int fd
);
Parametry
fd
Istniejący deskryptor plików.
Wartość zwracana
Zwraca uchwyt pliku systemu operacyjnego, jeśli fd
jest prawidłowy. W przeciwnym razie wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonanie jest dozwolone do kontynuowania, zwraca wartość INVALID_HANDLE_VALUE
(-1). Ustawia errno
również wartość EBADF
, wskazując nieprawidłową dojście do pliku. Aby uniknąć ostrzeżenia, gdy wynik jest używany jako uchwyt pliku Win32, rzutuj go na HANDLE
typ.
Uwaga
Gdy stdin
element , stdout
i stderr
nie jest skojarzony ze strumieniem (na przykład w aplikacji systemu Windows bez okna konsoli), wartości deskryptora plików dla tych strumieni są zwracane z _fileno
wartości specjalnej -2. Podobnie, jeśli jako parametr deskryptora pliku używasz wartości 0, 1 lub 2 zamiast wyniku wywołania _fileno
metody , zwraca również wartość specjalną -2, _get_osfhandle
gdy deskryptor pliku nie jest skojarzony ze strumieniem i nie ustawia errno
wartości . Nie jest to jednak prawidłowa wartość dojścia do pliku, a kolejne wywołania, które próbują go użyć, mogą zakończyć się niepowodzeniem.
Aby uzyskać więcej informacji na temat EBADF
i innych kodów błędów, zobaczerrno
, _doserrno
, _sys_errlist
i _sys_nerr
.
Uwagi
Aby zamknąć plik, którego uchwyt pliku systemu operacyjnego (OS) jest uzyskiwany przez _get_osfhandle
metodę , wywołaj _close
deskryptor fd
pliku . Nigdy nie wywołuje CloseHandle
wartości zwracanej tej funkcji. Źródłowy uchwyt pliku systemu operacyjnego jest własnością fd
deskryptora plików i jest zamykany po _close
wywołaniu metody .fd
Jeśli deskryptor plików jest własnością strumienia FILE *
, wywołanie fclose
tego FILE *
strumienia spowoduje zamknięcie deskryptora plików i uchwytu bazowego pliku systemu operacyjnego. W takim przypadku nie należy wywoływać _close
deskryptora plików.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Wymagania
Procedura | Wymagany nagłówek |
---|---|
_get_osfhandle |
<io.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Zobacz też
Obsługa plików
_close
_creat
, _wcreat
_dup
, _dup2
_open
, _wopen
_open_osfhandle