函数

GLibpoll

自 2.20 起

声明 [src]

gint
g_poll (
  GPollFD* fds,
  guint nfds,
  gint timeout
)

说明 [src]

侦听 fds,就像 poll() 系统调用一样,但具有可移植性。(在没有侦听的系统上,它使用 select() 进行模拟。)GMainContext 会在内部使用它,但是,如果您需要在文件描述符就绪之前阻止全部循环运行,则可以直接调用它。

fds 的每个元素都是 GPollFD,描述要侦听的单个文件描述符。fd 域表明文件描述符,而 events 域表明要侦听的事件。返回时,revents 域会填入实际发生的事件。

POSIX 系统上,fds 中的文件描述符可以是任何类型,但在 Windows 上,情况要复杂得多。如果您需要在必须在 Windows 上运行的代码中使用 g_poll(),最简单的解决方案是使用 g_io_channel_win32_make_pollfd() 来构造所有 GPollFDs

自 2.20 起提供

参数

fds

类型: GPollFD

要侦听的文件描述符。

数据归函数调用者所有。
nfds

类型: guint

fds 中文件描述符的数量。

timeout

类型: gint

等待的时间(以毫秒为单位),或为 -1 时无限期等待。

返回值

类型: gint

fdsrevents 域已填入的条目的数量,如果操作超时,则为 0,如果出错或调用中断,则为 -1。