msync(2) System Calls Manual msync(2) BEZEICHNUNG msync - eine Datei mit einem Speicherabbild synchronisieren BIBLIOTHEK Standard-C-Bibliothek (libc, -lc) UBERSICHT #include int msync(void Adresse[.Lange], size_t Lange, int Schalter); BESCHREIBUNG msync leitet Anderungen, die in der im Speicher befindlichen Kopie einer Datei gemacht wurden, mittels mmap(2) zuruck in das Dateisystem. Ohne Verwendung dieses Aufrufs besteht keine Garantie, dass Anderungen auf die Platte geschrieben werden, bevor munmap(2) aufgerufen wird. Um genauer zu sein: Der Teil der Datei, der dem Speicherbereich entspricht, der bei Adresse anfangt und Lange lang ist, wird aktualisiert. Das Argument Schalter sollte entweder MS_ASYNC oder MS_SYNC angeben. Es kann zusatzlich das Bit MS_INVALIDATE enthalten. Diese Bits haben folgende Bedeutung: MS_ASYNC gibt an, dass eine Aktualisierung geplant wird, der Aufruf jedoch sofort zuruckkehrt. MS_SYNC fordert eine Aktualisierung an und wartet, bis sie abgeschlossen ist. MS_INVALIDATE erbittet, dass andere Abbildungen der selben Datei verworfen werden sollen (so dass sie mit den neuen nur geschriebenen Werten aktualisiert werden konnen). RUCKGABEWERT Bei Erfolg wird Null zuruckgegeben. Bei einem Fehler wird -1 zuruckgegeben und errno gesetzt, um den Fehler anzuzeigen. FEHLER EBUSY MS_INVALIDATE wurde in Schalter angegeben und es existiert eine Speichersperre fur den angegebenen Adressbereich. EINVAL adresse ist kein Vielfaches der SEITENGROssE oder ein anderes Bit als MS_ASYNC | MS_INVALIDATE | MS_SYNC ist in Schalter gesetzt oder in schalter sind sowohl MS_SYNC als auch MS_ASYNC gesetzt. ENOMEM Der angegebene Speicher (oder ein Teil davon) wurde nicht abgebildet. VERSIONEN Gemass POSIX muss entweder MS_SYNC oder MS_ASYNC in Schalter angegeben werden und das tatsachliche Fehlschlagen beim Einfugen von einem dieser Schalter wird dazu fuhren, dass msync() auf einigen Systemen scheitert. Linux erlaubt jedoch einen Aufruf von msync() ohne diese Schalter mit einer Semantik, die (derzeit) der Angabe von MS_ASYNC entspricht. (Seit Linux 2.6.19 ist MS_ASYNC de facto ein Leerbefehl, da der Kernel unsaubere Seiten korrekt verfolgt und wenn notig aus dem Speicher leert.) Trotz des Linux-Verhaltens sollten portable, zukunftssichere Anwendungen sicherstellen, dass sie MS_SYNC oder MS_ASYNC in Schalter angeben. STANDARDS POSIX.1-2008. GESCHICHTE POSIX.1-2001. Dieser Aufruf wurde in Linux 1.3.21 eingefuhrt und dann EFAULT an Stelle von ENOMEM benutzt. In Linux 2.4.19 wurde dies auf den POSIX-Wert ENOMEM geandert. Auf POSIX-Systemen, auf denen msync() verfugbar ist, sind sowohl _POSIX_MAPPED_FILES als auch _POSIX_SYNCHRONIZED_IO in als ein Wert grosser als 0 definiert. (Siehe auch sysconf(3).) SIEHE AUCH mmap(2) B.O. Gallmeister, POSIX.4, O'Reilly, Seiten 128-129 und 389-391. UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Martin Schulze und Chris Leick erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . Linux man-pages 6.06 31. Oktober 2023 msync(2)