### Function

# GLib poll

since: 2.20

#### Declaration [src]

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

#### Description [src]

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

#### Parameters

`fds`

  Type: `GPollFD`

  File descriptors to poll.

  The data is owned by the caller of the function.

`nfds`

  Type: `guint`

  The number of file descriptors in `fds`.

`timeout`

  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.