Что происходит, когда вы вызываете WaitForSingleObject()
в дескрипторе, созданном с помощью CreateFile()
или _get_osfhandle()
?
По причинам, которые не стоит объяснять, я хотел бы использовать WaitForSingleObject()
, чтобы ждать HANDLE, которую я создал с помощью _get_osfhandle(fd)
, где fd
поступает от обычного вызова до _open()
. Возможно ли это?
Я пробовал это на практике, и на некоторых машинах он работает как ожидалось (HANDLE всегда находится в сигнальном состоянии, потому что вы можете читать больше данных), а на некоторых машинах WaitForSingleObject()
будет блокироваться бесконечно, если вы позволите он.
На странице MSDN для WaitForSingleObject()
говорится, что единственными поддерживаемыми вещами, которые он обрабатывает, являются "уведомления об изменениях, вход в консоль, события, уведомления о ресурсах памяти, мьютексы, процессы, семафоры, потоки и ожидаемые таймеры".
Кроме того, было бы иначе, если бы я использовал CreateFile()
вместо _get_osfhandle()
в дескрипторе файла CRT?