Что я понимаю:
POSIX AIO
API создаются прототипом в <aio.h>
, и вы связываете свою программу с librt (-lrt), а API libaio
в <libaio.h>
и ваша программа связана с libaio (-laio).
Что я не могу понять:
1. Разве ядро обрабатывает один из этих методов по-разному?
2.Если флаг O_DIRECT
обязателен для использования любого из них?
Как упоминалось в этом сообщении, libaio отлично работает без O_DIRECT
при использовании libaio
.Okay, понял, но:
Согласно книге программирования Linux LLove Linux, Linux поддерживает aio (который я предполагаю, это POSIX AIO) на обычных файлах, только если он открыт с помощью O_DIRECT
. Но небольшая программа, которую я написал (используя aio.h, связанную с -lrt), который вызывает aio_write
в файле, открытом без флага O_DIRECT
, без проблем.