_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 errno
EBADF
, 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
, stdout
e 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_errlist
e _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 fd
di 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