Что происходит, когда вы вызываете WaitForSingleObject()
на ручке, которую вы создали с помощью CreateFile()
или _get_osfhandle()
?WaitForSingleObject на дескрипторе файла?
По причинам, не стоит объяснять, я хотел бы использовать WaitForSingleObject()
ждать на HANDLE, который я создал с _get_osfhandle(fd)
, где fd
приходит от обычного вызова _open()
. Это возможно?
Я пробовал это на практике, и на некоторых машинах он работает должным образом (РУЧКА всегда находится в сигнальном состоянии, потому что вы можете читать больше данных), а на некоторых машинах WaitForSingleObject()
будет блокироваться бесконечно, если вы его ,
На странице MSDN для WaitForSingleObject()
говорится, что единственными поддерживаемыми вещами, которые он обрабатывает, являются «уведомления об изменениях, ввод в консоль, события, уведомления о ресурсах памяти, мьютексы, процессы, семафоры, потоки и ожидаемые таймеры».
Кроме того, было бы иначе, если бы я использовал CreateFile()
вместо _get_osfhandle()
на дескрипторе файла CRT?
Операция четко определена. Это описано в [GetOverlappedResult] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms683209.aspx). Это может быть обескуражено из-за того, как оно реализовано, и может быть не совсем полезно. Есть лучшие варианты. Однако он четко определен. – IInspectable