cc [ flag ... ] file ... -laio [ library ... ]
#include <sys/asynch.h> #include <sys/time.h>
aio_result_t *aiowait(const struct timeval *timeout);
Unsafe
aiowait() suspends the calling process until one of its outstanding asynchronous I/O operations completes. This provides a synchronous method of notification.
If timeout is a non-zero pointer, it specifies a maximum interval to wait for the completion of an asynchronous I/O operation. If timeout is a zero pointer, then aiowait() blocks indefinitely. To effect a poll, the timeout parameter should be non-zero, pointing to a zero-valued timeval structure.
The timeval structure is defined in <sys/time.h> and contains the following members:
long tv_sec; /* seconds */ long tv_usec; /* and microseconds */
On success, aiowait() returns a pointer to the result structure used when the completed asynchronous I/O operation was requested. On failure, it returns -1 and sets errno to indicate the error. aiowait() returns 0 if the time limit expires.
aiowait() is the only way to dequeue an asynchronous notification. It may be used either inside a SIGIO signal handler or in the main program. One SIGIO signal may represent several queued events.
Passing an illegal address as timeout will result in setting errno to EFAULT only if it is detected by the application process.