Udostępnij za pośrednictwem


_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 stdinelement , stdouti 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 _filenometody , zwraca również wartość specjalną -2, _get_osfhandle gdy deskryptor pliku nie jest skojarzony ze strumieniem i nie ustawia errnowartoś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_errlisti _sys_nerr.

Uwagi

Aby zamknąć plik, którego uchwyt pliku systemu operacyjnego (OS) jest uzyskiwany przez _get_osfhandlemetodę , wywołaj _close deskryptor fdpliku . 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