Subroutine aio_fsync
Zweck
Synchronisiert asynchrone Dateien.
Bibliothek
Standard-C-Bibliothek (libc.a)
Syntax
#include <aio.h>
int aio_fsync (op, aiocbp)
int op;
struct aiocb *aiocbp;Beschreibung
Die Subroutine aio_fsync zwingt asynchron alle E/A-Operationen zum Abschluss der synchronisierten Ein-/Ausgabe. Der Funktionsaufruf wird zurückgegeben, wenn die Synchronisationsanforderung eingeleitet oder in die Datei oder Einheit eingereiht wurde (auch wenn die Daten nicht sofort synchronisiert werden können).
Wenn der Parameter op auf O_DSYNC gesetzt ist, werden alle derzeit in der Warteschlange befindlichen E/A-Operationen wie durch einen Aufruf der Subroutine fdatasync ausgeführt. Wenn der Parameter op auf O_SYNC gesetzt ist, werden alle derzeit eingereihten E/A-Operationen wie durch einen Aufruf der Subroutine fsync abgeschlossen. Wenn die Subroutine aio_fsync fehlschlägt oder wenn die von aio_fsync in die Warteschlange gestellte Operation fehlschlägt, kann nicht garantiert werden, dass ausstehende E/A-Operationen abgeschlossen werden.
Wenn aio_fsync erfolgreich ist, wird nur die Ein-/Ausgabe, die zum Zeitpunkt des Aufrufs von aio_fsync in die Warteschlange gestellt wurde, garantiert in den relevanten Beendigungsstatus versetzt. Die Beendigung der nachfolgenden Ein-/Ausgabe für den Dateideskriptor ist nicht garantiert, dass sie synchronisiert ausgeführt wird.
Der Parameter aiocbp bezieht sich auf einen asynchronen E/A-Steuerblock. Der Wert aiocbp kann als Argument für die Subroutinen aio_error und aio_return verwendet werden, um den Fehlerstatus bzw. Rückgabestatus der asynchronen Operation zu bestimmen, während sie fortgesetzt wird. Wenn die Anforderung in die Warteschlange gestellt wird, lautet der Fehlerstatus für die Operation EINPROGRESS. Wenn alle Daten erfolgreich übertragen wurden, wird der Fehlerstatus zurückgesetzt, um den Erfolg oder das Fehlschlagen der Operation wiederzugeben. Wenn die Operation nicht erfolgreich abgeschlossen wird, wird der Fehlerstatus für die Operation auf den Fehler gesetzt. Das Member aio_sigevent legt die asynchrone Benachrichtigung fest, die erfolgen soll, wenn alle Operationen den synchronisierten E/A-Abschluss erreicht haben. Alle anderen Member der Struktur, auf die der Parameter aiocbp verweist, werden ignoriert. Wenn der von aiocbp referenzierte Steuerblock vor der asynchronen Ein-/Ausgabeausführung zu einer unzulässigen Adresse wird, ist das Verhalten nicht definiert.
Wenn die Subroutine aio_fsync fehlschlägt oder aiocbp eine Fehlerbedingung anzeigt, wird nicht garantiert, dass die Daten erfolgreich übertragen wurden.
Parameter
| Element | Beschreibung |
|---|---|
| op | Bestimmt, wie alle derzeit in die Warteschlange eingereihten E/A-Operationen ausgeführt werden. |
| aiocbp | Verweist auf die aiocb -Struktur, die der E/A-Operation zugeordnet ist |
aiocb-struktur
int aio_fildes
off_t aio_offset
char *aio_buf
size_t aio_nbytes
int aio_reqprio
struct sigevent aio_sigevent
int aio_lio_opcodeAusführungsumgebung
Die Subroutinen aio_error und aio_error64 können nur über die Prozessumgebung aufgerufen werden.
Rückgabewerte
Die Subroutine aio_fsync gibt eine 0 an den aufrufenden Prozess zurück, wenn die E/A-Operation erfolgreich in die Warteschlange gestellt wurde. Andernfalls gibt er -1 zurück und setzt die globale Variable errno, um den Fehler anzuzeigen.
Fehlercodes
| Element | Beschreibung |
|---|---|
| EAGAIN | Die angeforderte asynchrone Operation wurde aufgrund von temporären Ressourcenbeschränkungen nicht in die Warteschlange gestellt. |
| EBADF | Das Member aio_fildes der aiocb -Struktur, auf die der Parameter aiocbp verweist, ist kein gültiger Dateideskriptor, der zum Schreiben geöffnet ist. |
Falls eine der E/A-Operationen in der Warteschlange fehlschlägt, gibt die Subroutine aio_fsync die Fehlerbedingung zurück, die für die Subroutinen read und write definiert ist. Der Fehler wird im Fehlerstatus für die asynchrone Subroutine fsync zurückgegeben, die mit der Subroutine aio_error abgerufen werden kann.