在用WaitForSingleObject()CreateFile()创建的句柄上调用_get_osfhandle()时会发生什么?

由于不值得解释的原因,我想使用WaitForSingleObject()等待我用_get_osfhandle(fd)创建的HANDLE,其中fd来自对_open()的常规调用。这可能吗?

我已经在实践中进行了尝试,并且在某些计算机上它按预期工作(HANDLE始终处于信号状态,因为您可以从中读取更多数据),并且在某些计算机上,如果允许WaitForSingleObject()将会无限期阻塞。

Moji页面的WaitForSingleObject()说,它处理的唯一受支持的事情是“更改通知,控制台输入,事件,内存资源通知,互斥,进程,信号量,线程和可等待的计时器”。

另外,如果我在CRT文件描述符上使用CreateFile()而不是_get_osfhandle(),会有所不同吗?

最佳答案

不要这样如您所见,它具有未定义的行为。

即使定义了行为,也要以相对无用的方式进行定义,除非您不喜欢编写其他代码。当该句柄上的任何异步I/O操作完成时,会发出信号,这并不能概括为跟踪哪个I/O操作已完成。

您为什么要等待文件句柄?显然,当您做的事情甚至没有得到足够的支持而不会无限期地阻塞时,意图就很重要。

关于windows - 在文件句柄上的WaitForSingleObject?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/775014/

10-10 09:09