since: 2.20


g_poll (
  GPollFD* fds,
  guint nfds,
  gint timeout


Polls fds, as with the poll() system call, but portably. (On systems that don’t have poll(), it is emulated using select().) This is used internally by GMainContext, but it can be called directly if you need to block until a file descriptor is ready, but don’t want to run the full main loop.

Each element of fds is a GPollFD describing a single file descriptor to poll. The fd field indicates the file descriptor, and the events field indicates the events to poll for. On return, the revents fields will be filled with the events that actually occurred.

On POSIX systems, the file descriptors in fds can be any sort of file descriptor, but the situation is much more complicated on Windows. If you need to use g_poll() in code that has to run on Windows, the easiest solution is to construct all of your GPollFDs with g_io_channel_win32_make_pollfd().

Available since: 2.20



Type: GPollFD

File descriptors to poll.

The data is owned by the caller of the function.

Type: guint

The number of file descriptors in fds.


Type: gint

Amount of time to wait, in milliseconds, or -1 to wait forever.

Return value

Type: gint

The number of entries in fds whose revents fields were filled in, or 0 if the operation timed out, or -1 on error or if the call was interrupted.