POLL(2) | System Calls Manual | POLL(2) |
poll
— synchronous
I/O multiplexing
#include
<poll.h>
int
poll
(struct pollfd fds[],
nfds_t nfds, int timeout);
poll
()
examines a set of file descriptors to see if some of them are ready for I/O
or if certain events have occurred on them. The fds
argument is a pointer to an array of pollfd structures, as defined in
⟨poll.h⟩ (shown below). The
nfds argument specifies the size of the
fds array.
struct pollfd { int fd; /* file descriptor */ short events; /* events to look for */ short revents; /* events returned */ };
The fields of struct pollfd are as follows:
The event bitmasks in events and revents have the following bits:
The distinction between normal, priority, and high-priority data is specific to particular file types or devices.
If timeout is greater than zero,
it specifies a maximum interval (in milliseconds) to wait for any file
descriptor to become ready. If timeout is zero, then
poll
() will
return without blocking. If the value of timeout is
-1, the poll blocks indefinitely.
poll
() returns the number of descriptors
that are ready for I/O, or -1 if an error occurred. If the time limit
expires, poll
() returns 0. If
poll
() returns with an error, including one due to
an interrupted call, the fds array will be unmodified
and the global variable errno will be set to indicate
the error.
poll
() will fail if:
EAGAIN
]EFAULT
]EINTR
]EINVAL
]The poll
() system call currently does not
support devices.
accept(2), connect(2), connectx(2), kevent(2), read(2), recv(2), select(2), send(2), write(2)
The poll
() function call appeared in
AT&T System V UNIX.
March 18, 2015 | macOS 14.6 |