2011-10-12 7 views
9

Czy można wyodrębnić plik HANDLE z deskryptora pliku systemu Windows lub z pliku *?plik wyciągu UCHWYTU z deskryptora pliku systemu Windows lub z pliku *

Jako przykład, FILE * jest zaimplementowany na górze deskryptorów plików, a następnie zaimplementowane deskryptory plików (w systemie Windows) na UCHWYTACH. FD można wyodrębnić z FILE * przy użyciu udokumentowanej funkcji fileno(). Wydobywanie HANDLE z FD może być bardziej hackingowe lub bardziej udokumentowane ....

+3

Hmm, dlaczego ludzie głosowaliby za zamknięciem uzasadnionego pytania. – Andrei

+0

Niektórzy ludzie są uprzedzeni wobec podstawowych pytań. –

+0

@Andrei: Początkowo było ci trochę trudno przeczytać. Jeszcze trochę wysiłku w pisowni w przyszłości, a ludzie są bardziej skłonni do wysiłku, aby znaleźć odpowiedź. –

Odpowiedz

14

Tak. Zobacz _get_osfhandle.

+0

To miło. Dzięki. – Andrei

+5

Odwrotne - ['_open_osfhandle'] (http://msdn.microsoft.com/en-us/library/bdts1c9x%28v=vs.110%29.aspx) - * Kojarzy deskryptor pliku C z czasem istniejący uchwyt pliku systemu operacyjnego. * –

+0

Wygląda na to, że wynik _get_osfhandle powinien zostać rzucony na UCHWYT, aby wszystko działało. Bez obsady otrzymuję komunikaty o błędach (z gcc 6.3 w msys 2 kompilacja C++): błąd: nieprawidłowa konwersja z "intptr_t {aka long long int}" na "HANDLE {aka void *} ' –

Powiązane problemy