¿Qué sucede cuando llama al WaitForSingleObject()
en un mango que ha creado con CreateFile()
o _get_osfhandle()
?WaitForSingleObject en un identificador de archivo?
Por razones que no vale la pena explicar quisiera utilizar WaitForSingleObject()
que esperar en un mango que he creado con _get_osfhandle(fd)
, donde fd
proviene de una llamada normal a _open()
. es posible?
Lo he probado en la práctica, y en algunas máquinas funciona como se esperaba (la MANIJA siempre está en estado señalizado porque puede leer más datos de ella), y en algunas máquinas WaitForSingleObject()
se bloqueará indefinidamente si se lo permite .
La página MSDN para WaitForSingleObject()
dice que las únicas cosas admitidas que maneja son "notificaciones de cambio, entrada de consola, eventos, notificaciones de recursos de memoria, mutex, procesos, semáforos, subprocesos y temporizadores temporales".
Además, ¿sería diferente si usara CreateFile()
en lugar de _get_osfhandle()
en un descriptor de archivo CRT?
La operación está bien definida. Esto está documentado en [GetOverlappedResult] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms683209.aspx). Se puede desalentar, debido a la forma en que se implementa, y puede no ser útil en general. Hay mejores opciones. Sin embargo, está bien definido. – IInspectable