Асинхронный ввод/вывод
Средства асинхронного ввода/вывода позволяют прикладным процессам ставить в очередь команды ввода/вывода данных, продолжать работу параллельно с операциями передачи данных и получать асинхронные уведомления о завершении выполнения этих команд.
После завершения асинхронной операции ввода/вывода приложению может быть доставлен сигнал.
Жизненный цикл операции асинхронного ввода/вывода включает два этапа:
- постановка запроса в очередь;
- выполнение запроса, осуществление ввода/вывода.
Основными операциями асинхронного ввода/вывода являются чтение (aio_read()) и запись (aio_write()) данных.
Функция lio_listio() позволяет за один вызов поставить в очередь список запросов на чтение и/или запись данных.
Для выяснения статуса операций асинхронного ввода/вывода служат функции aio_return() и aio_error().
Ожидающие обработки запросы на асинхронный ввод/вывод можно аннулировать, воспользовавшись функцией aio_cancel().
Согласно стандарту POSIX-2001, списком можно не только инициировать запросы на асинхронный ввод/вывод, но и ожидать их завершения. Для этого служит функция aio_suspend().
Функции sync(), fsync(), fdatasync(), aio_fsync() предназначены для согласования состояния буферизованных и хранимых в долговременной памяти данных, обеспечения целостности данных и файлов.