ares_process - Process events for name resolution
#include <ares.h> void ares_process(ares_channel channel, fd_set *read_fds, fd_set *write_fds) void ares_process_fd(ares_channel channel, ares_socket_t read_fd, ares_socket_t write_fd)
ARES_PROCESS(3) Library Functions Manual ARES_PROCESS(3)
NAME
ares_process - Process events for name resolution
SYNOPSIS
#include <ares.h>
void ares_process(ares_channel channel,
fd_set *read_fds,
fd_set *write_fds)
void ares_process_fd(ares_channel channel,
ares_socket_t read_fd,
ares_socket_t write_fd)
DESCRIPTION
The ares_process(3) function handles input/output events and timeouts
associated with queries pending on the name service channel identified
by channel. The file descriptor sets pointed to by read_fds and
write_fds should have file descriptors set in them according to whether
the file descriptors specified by ares_fds(3) are ready for reading and
writing. (The easiest way to determine this information is to invoke
select(3) with a timeout no greater than the timeout given by
ares_timeout(3)).
The ares_process(3) function will invoke callbacks for pending queries
if they complete successfully or fail.
ares_process_fd(3) works the same way but acts and operates only on the
specific file descriptors (sockets) you pass in to the function. Use
ARES_SOCKET_BAD for "no action". This function is provided to allow
users of c-ares to void select(3) in their applications and within c-
ares.
To only process possible timeout conditions without a socket event
occurring, one may pass NULL as the values for both read_fds and
write_fds for ares_process(3), or ARES_SOCKET_BAD for both read_fd and
write_fd for ares_process_fd(3).
EXAMPLE
The following code fragment waits for all pending queries on a channel
to complete:
int nfds, count;
fd_set readers, writers;
struct timeval tv, *tvp;
while (1) {
FD_ZERO(&readers);
FD_ZERO(&writers);
nfds = ares_fds(channel, &readers, &writers);
if (nfds == 0)
break;
tvp = ares_timeout(channel, NULL, &tv);
count = select(nfds, &readers, &writers, NULL, tvp);
ares_process(channel, &readers, &writers);
}
ATTRIBUTES
See attributes(7) for descriptions of the following attributes:
+---------------+------------------+
|ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+---------------+------------------+
|Availability | library/libcares |
+---------------+------------------+
|Stability | Volatile |
+---------------+------------------+
SEE ALSO
ares_fds(3), ares_timeout(3)
AUTHOR
Greg Hudson, MIT Information Systems
Copyright 1998 by the Massachusetts Institute of Technology.
NOTES
Source code for open source software components in Oracle Solaris can
be found at https://www.oracle.com/downloads/opensource/solaris-source-
code-downloads.html.
This software was built from source available at
https://github.com/oracle/solaris-userland. The original community
source was downloaded from https://c-ares.haxx.se/download/c-
ares-1.17.2.tar.gz.
Further information about this software can be found on the open source
community website at https://c-ares.haxx.se/.
25 July 1998 ARES_PROCESS(3)