Что я понимаю:
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, без проблем.