Différence entre POSIX AIO et libaio sous Linux?


Answers

Question

Ce que j'ai l' air de comprendre

POSIX AIO API <aio.h> POSIX AIO sont prototypées dans <aio.h> et vous liez votre programme avec librt (-lrt), tandis que les API libaio dans <libaio.h> et votre programme sont liés à libaio (-laio).

Ce que je ne peux pas comprendre:

1. Le noyau gère-t-il différemment l'une ou l'autre de ces méthodes?

O_DIRECT drapeau O_DIRECT obligatoire pour utiliser l'un ou l'autre?

Comme mentionné dans ce post , libaio fonctionne bien sans O_DIRECT lors de l'utilisation de libaio .Okay, compris mais:

Selon Linux System Programming book de R.Love , Linux prend en charge aio (que je suppose est POSIX AIO) sur les fichiers réguliers seulement si ouvert avec O_DIRECT Mais un petit programme que j'ai écrit (en utilisant aio.h, lié avec -lrt) qui appelle aio_write sur un fichier ouvert sans l'indicateur O_DIRECT fonctionne sans problèmes.