2011-10-12 17 views
9

È possibile estrarre il file HANDLE dal descrittore di file di Windows o da FILE *?estrarre il file HANDLE dal descrittore di file di Windows o da FILE *

Ad esempio, FILE * è implementato sopra i descrittori di file e, a sua volta, i descrittori di file sono implementati (su Windows) sopra HANDLE. Un FD può essere estratto da FILE * usando la funzione documentata fileno(). Estrarre HANDLE da FD potrebbe essere più hacking o più documentato ....

+3

Hmm perché la gente voterebbe per chiudere una domanda legittima. – Andrei

+0

Alcune persone hanno dei pregiudizi nei confronti delle domande di base. –

+0

@Andrei: Era un po 'difficile da leggere in origine. Metti un po 'più di impegno nell'ortografia in futuro e le persone sono più propense a cercare di darti una risposta. –

risposta

14

Sì. Vedi _get_osfhandle.

+0

È bello. Grazie. – Andrei

+5

L'inverso - ['_open_osfhandle'] (http://msdn.microsoft.com/en-us/library/bdts1c9x%28v=vs.110%29.aspx) - * Associa un descrittore di file di runtime C con un handle di file del sistema operativo esistente. * –

+0

E sembra che il risultato di _get_osfhandle debba essere castato su una MANIGLIA per far funzionare le cose. Senza il cast ottengo messaggi di errore (da gcc 6.3 in msys 2 che compila C++): errore: conversione non valida da 'intptr_t {aka long long int}' a 'HANDLE {aka void *}' –

Problemi correlati