将 stdin 设置为非阻塞

如何在 Windows 上将 stdin 设置为非阻塞?

在 Posix 上,我可以这样做:

local ffi, F_SETFL, O_NONBLOCK = require 'ffi', 4, 2048
ffi.cdef 'int fcntl(int fd, int cmd, long arg);'
ffi.C.fcntl(0, F_SETFL, O_NONBLOCK)

之后,调用 io.read 立即返回而不是等待输入。

我如何在 Windows 上做到这一点?我只需要支持 Cygwin 控制台。上面的代码在没有错误的情况下运行,但没有效果。

点赞