lio_listio
lio_listio
Performs an asynchronous read operation.
Syntax
int lio_listio(int mode, struct aiocb *list[], int nent, struct sigevent *sig);
Arguments
- mode
- Takes following values declared in<aio.h>file:
- LIO_WAIT: Use when you want the function to return only after completing I/O operations (synchronous I/O operations)
- LIO_NOWAIT: Use when you want the function to return as soon as I/O operations are queued (asynchronous I/O requests)
- *list[]
- Array of theaiocbpointers specifying the submitted I/O requests; NULL elements in the array are ignored
- nent
- Number of elements in the array
- *sig
- Determines if asynchronous notification is sent after all I/O operations completes; takes following values:
- 0: Asynchronous notification occurs; a queued signal, with an application-defined value, is generated when an asynchronous I/O request occurs
- 1: Asynchronous notification does not occur even when asynchronous I/O requests are processed
- 2: Asynchronous notification occurs; a notification function is called to perform notification
Description
The
lio_listio()
function initiates a list of I/O requests with a single function call.The
mode
argument determines whether the function returns when all the I/O operations are completed, or as soon as the operations are queued.If the mode argument is
LIO_WAIT
, the function waits until all I/O operations are complete. The sig
argument is ignored in this case.If the
mode
argument is LIO_NOWAIT
, the function returns immediately. Asynchronous notification occurs according to the sig
argument after all the I/O operations complete.Returns
When
mode
=LIO_NOWAIT
the lio_listio()
function returns:- 0: I/O operations are successfully queued
- -1: Error; I/O operations not queued; to get the proper error code, useerrno.
When
mode
=LIO_WAIT
the lio_listio()
function returns:- 0: I/O operations specified completed successfully
- -1: Error; I/O operations not completed; to get the proper error code, useerrno.