Cosa succede quando si chiama WaitForSingleObject()
su un handle creato con CreateFile()
o _get_osfhandle()
?WaitForSingleObject su un handle di file?
Per ragioni non vale la pena spiegare Vorrei utilizzare WaitForSingleObject()
ad aspettare su una maniglia che ho creato con _get_osfhandle(fd)
, dove fd
proviene da una normale chiamata a _open()
. È possibile?
L'ho provato in pratica e su alcune macchine funziona come previsto (la MANIGLIA è sempre nello stato segnalato perché è possibile leggere più dati da esso), e su alcune macchine WaitForSingleObject()
si bloccherà indefinitamente se lo si lascia .
La pagina MSDN per WaitForSingleObject()
dice che le uniche cose supportate che gestisce sono "notifiche di modifiche, input di console, eventi, notifiche di risorse di memoria, mutex, processi, semafori, thread e timer di attesa".
Inoltre, sarebbe diverso se usassi CreateFile()
invece di _get_osfhandle()
su un descrittore di file CRT?
L'operazione è ben definita. Questo è documentato in [GetOverlappedResult] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms683209.aspx). Potrebbe essere scoraggiato, a causa del modo in cui è implementato, e potrebbe non essere generalmente utile. Ci sono opzioni migliori. Tuttavia, è ben definito. – IInspectable