msync(2) System Calls Manual msync(2) NOM msync - Synchroniser un fichier et une projection en memoire BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include int msync(void addr[.length], size_t length, int flags); DESCRIPTION msync() ecrit les modifications qui ont ete effectuees sur la copie d'un fichier qui est projete en memoire par mmap(2) sur le systeme de fichiers. Si l'on n'utilise pas cet appel, rien ne garantit que les changements soient ecrits avant la suppression de la projection par munmap(2). Pour etre plus precis, la portion du fichier correspondant a la zone memoire commencant en addr et ayant une longueur de length est mise a jour. Le parametre flags devrait indiquer exactement MS_ASYNC et MS_SYNC et il peut aussi inclure le bit MS_INVALIDATE. Ces bits ont la signification suivante : MS_ASYNC Indiquer la programmation d'une mise a jour, mais l'appel renvoie immediatement. MS_SYNC Demander une mise a jour et attendre qu'elle se termine. MS_INVALIDATE Demander d'invalider d'autres projections du meme fichier (pour qu'elles puissent etre mises a jour avec les nouvelles valeurs ecrites recemment). VALEUR RENVOYEE En cas de succes, zero est renvoye. En cas d'erreur, -1 est renvoye et errno est definie pour preciser l'erreur. ERREURS EBUSY MS_INVALIDATE etait positionne dans flags, mais un verrouillage memoire existe pour l'intervalle indique. EINVAL addr n'est pas aligne sur une frontiere de page (un multiple de PAGESIZE) ou d'autres bits que MS_ASYNC | MS_INVALIDATE | MS_SYNC sont a 1 dans flags. Ou bien MS_SYNC et MS_ASYNC sont tous les deux specifies dans flags. ENOMEM La zone memoire indiquee (ou une partie de cette zone) n'est pas une projection. VERSIONS POSIX specifie qu'au moins MS_SYNC ou MS_ASYNC doit etre indique dans flags, et que si aucun des deux n'est indique msync() echouera sur certains systemes. Cependant, Linux autorise d'appeler msync() sans indiquer aucun des deux attributs, avec une semantique actuellement equivalente a indiquer MS_ASYNC. (Depuis Linux 2.6.19, MS_ASYNC est sans effet, puisque le noyau suit correctement les pages modifiees et les transfere vers le disque si besoin.) Malgre le comportement de Linux, les applications portables et destinees a etre perennes doivent indiquer au moins MS_SYNC ou MS_ASYNC dans flags. STANDARDS POSIX.1-2008. HISTORIQUE POSIX.1-2001. Cet appel a ete introduit dans Linux 1.3.21 et utilisait EFAULT au lieu de ENOMEM. Dans Linux 2.4.19, ceci a ete remplace par la valeur POSIX ENOMEM. Sur les systemes conformes a la specification POSIX sur lesquels msync() est disponible, les constantes symboliques _POSIX_MAPPED_FILES et _POSIX_SYNCHRONIZED_IO sont definies dans comme etant des valeurs superieures a 0. (Consultez aussi sysconf(3).) VOIR AUSSI mmap(2) B.O. Gallmeister, POSIX.4, O'Reilly, p. 128-129 et 389-391. TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Jean-Philippe MENGUAL Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 msync(2)