_get_osfhandle

Recupera l''handle di file del sistema operativo associato al descrittore di file specificato.

Sintassi

intptr_t _get_osfhandle(
   int fd
);

Parametri

fd
Descrittore di file esistente.

Valore restituito

Restituisce un handle di file del sistema operativo se fd è valido. In caso contrario, viene richiamato il gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, restituisce INVALID_HANDLE_VALUE (-1). Imposta anche su errnoEBADF, che indica un handle di file non valido. Per evitare un avviso quando il risultato viene usato come handle di file Win32, eseguirne il cast a un HANDLE tipo.

Nota

Quando stdin, stdoute stderr non sono associati a un flusso (ad esempio, in un'applicazione Windows senza una finestra della console), i valori del descrittore di file per questi flussi vengono restituiti come _fileno valore speciale -2. Analogamente, se si usa un parametro 0, 1 o 2 come parametro del descrittore di file anziché il risultato di una chiamata a _fileno, _get_osfhandle restituisce anche il valore speciale -2 quando il descrittore di file non è associato a un flusso e non imposta errno. Tuttavia, questo non è un valore di handle di file valido e le chiamate successive che tentano di usarlo potrebbero non riuscire.

Per altre informazioni su EBADF e altri codici di errore, vedere errno, _doserrno, _sys_errliste _sys_nerr.

Osservazioni:

Per chiudere un file il cui handle di file del sistema operativo (OS) viene ottenuto da _get_osfhandle, chiamare _close sul descrittore fddi file . Non chiamare CloseHandle mai sul valore restituito di questa funzione. L'handle di file del sistema operativo sottostante è di proprietà del fd descrittore di file e viene chiuso quando _close viene chiamato su fd. Se il descrittore di file è di proprietà di un FILE * flusso, la chiamata fclose a tale FILE * flusso chiude sia il descrittore di file che l'handle del file del sistema operativo sottostante. In questo caso, non chiamare _close il descrittore di file.

Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.

Requisiti

Ciclo Intestazione obbligatoria
_get_osfhandle <io.h>

Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).

Vedi anche

Gestione dei file
_close
_creat, _wcreat
_dup, _dup2
_open, _wopen
_open_osfhandle