.\" -*- coding: UTF-8 -*- .\" Copyright 1993 Giorgio Ciucci (giorgio@crcc.it) .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" Modified Sun Nov 28 17:06:19 1993, Rik Faith (faith@cs.unc.edu) .\" with material from Luigi P. Bai (lpb@softint.com) .\" Portions Copyright 1993 Luigi P. Bai .\" Modified Tue Oct 22 22:04:23 1996 by Eric S. Raymond .\" Modified, 5 Jan 2002, Michael Kerrisk .\" Modified, 19 Sep 2002, Michael Kerrisk .\" Added SHM_REMAP flag description .\" Modified, 27 May 2004, Michael Kerrisk .\" Added notes on capability requirements .\" Modified, 11 Nov 2004, Michael Kerrisk .\" Language and formatting clean-ups .\" Changed wording and placement of sentence regarding attachment .\" of segments marked for destruction .\" .\" FIXME . Add an example program to this page. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH SHMOP 2 "2 août 2019" Linux "Manuel du programmeur Linux" .SH NOM shmat, shmdt \- Opérations sur la mémoire partagée System\ V .SH SYNOPSIS .nf \fB#include \fP \fB#include \fP .PP \fBvoid *shmat(int \fP\fIshmid\fP\fB, const void *\fP\fIshmaddr\fP\fB, int \fP\fIshmflg\fP\fB);\fP .PP \fBint shmdt(const void *\fP\fIshmaddr\fP\fB);\fP .fi .SH DESCRIPTION .SS shmat() La fonction \fBshmat\fP() attache le segment de mémoire partagée System\ V identifié par \fIshmid\fP au segment de données du processus appelant. L'adresse d'attachement est indiquée par \fIshmaddr\fP avec les critères suivants\ : .IP * 3 If \fIshmaddr\fP is NULL, the system chooses a suitable (unused) page\-aligned address to attach the segment. .IP * Si \fIshmaddr\fP n'est pas NULL et si \fBSHM_RND\fP est indiqué dans \fIshmflg\fP, l'attachement a lieu à l'adresse \fIshmaddr\fP arrondie au multiple inférieur de \fBSHMLBA\fP. .IP * Sinon, \fIshmaddr\fP doit être alignée sur une frontière de page, où l'attachement a lieu. .PP En plus de \fBSHM_RND\fP, les attributs suivants peuvent être indiqués dans le paramètre de masque \fIshmflg\fP\ : .TP \fBSHM_EXEC\fP (spécifique à Linux, depuis Linux\ 2.6.9) Autoriser l'exécution du contenu du segment. L'appelant doit avoir le disposer du droit d'exécution sur le segment. .TP \fBSHM_RDONLY\fP Attacher le segment est en seule. Le processus doit disposer de la permission de lecture dessus. Si cet attribut n'est pas indiqué, le segment est attaché en lecture et écriture, et le processus doit disposer des deux permissions d'accès. Il n'y a pas de notion d'écriture seule pour les segments de mémoire partagée. .TP \fBSHM_REMAP\fP (spécifique à Linux) Cette attribut indique que la projection du segment doit remplacer une projection précédente dans l'intervalle commençant en \fIshmaddr\fP et s'étendant sur la taille du segment. (Normalement une erreur \fBEINVAL\fP se produirait si une projection existait déjà dans l'intervalle indiqué.) Dans ce cas, \fIshmaddr\fP ne doit pas être \fBNULL\fP. .PP La valeur \fBbrk\fP(2) du processus appelant n'est pas altérée par l'attachement. Le segment est automatiquement détaché quand le processus se termine. Le même segment peut être attaché à la fois en lecture seule et en lecture/écriture. Il peut également être attaché en plusieurs endroits de l'espace d'adressage du processus. .PP Quand \fBshmat\fP() réussit, les membres de la structure \fIshmid_ds\fP associée au segment de mémoire partagée (consultez \fBshmctl\fP(2)) sont mis à jour ainsi\ : .IP \fIshm_atime\fP correspond à l'heure actuelle. .IP \fIshm_lpid\fP contient le PID de l'appelant. .IP .\" \fIshm_nattch\fP est incrémenté de 1. .SS shmdt() La fonction \fBshmdt\fP() détache le segment de mémoire partagée situé à l'adresse indiquée par \fIshmaddr\fP. Le segment doit être effectivement attaché, et l'adresse \fIshmaddr\fP doit être celle renvoyée précédemment par \fBshmat\fP(). .PP Quand \fBshmdt\fP() réussit, les membres de la structure \fIshmid_ds\fP associée au segment de mémoire partagée sont mis à jour ainsi\ : .IP \fIshm_dtime\fP correspond à l'heure actuelle. .IP \fIshm_lpid\fP contient le PID de l'appelant. .IP \fIshm_nattch\fP est décrémenté de 1. S'il devient nul, et si le segment est marqué pour destruction, il est effectivement détruit. .SH "VALEUR RENVOYÉE" S'il réussit, \fBshmat\fP() renvoie l'adresse d'attachement du segment de mémoire partagée. En cas d'échec \fI(void\ *)\ \-1\fP est renvoyé, et \fIerrno\fP contient le code d'erreur. .PP S'il réussit, \fBshmdt\fP() renvoie 0. En cas d'échec, \-1 est renvoyé et \fIerrno\fP contient le code d'erreur. .SH ERREURS Quand \fBshmat\fP() échoue, \fIerrno\fP prend l'une des valeurs suivantes\ : .TP \fBEACCES\fP The calling process does not have the required permissions for the requested attach type, and does not have the \fBCAP_IPC_OWNER\fP capability in the user namespace that governs its IPC namespace. .TP \fBEIDRM\fP \fIshmid\fP pointe sur un segment détruit. .TP \fBEINVAL\fP \fIshmid\fP est invalide, \fIshmaddr\fP est mal alignée (c'est\-à\-dire pas alignée sur une page et \fBSHM_RND\fP n'a pas été précisé) ou invalide, échec lors de l'attachement à \fIshmaddr\fP, ou \fBSHM_REMAP\fP a été réclamé et \fIshmaddr\fP est \fBNULL\fP. .TP \fBENOMEM\fP Pas assez de mémoire pour le système. .PP Quand \fBshmdt\fP() échoue, \fIerrno\fP prend l'une des valeurs suivantes\ : .TP \fBEINVAL\fP .\" The following since 2.6.17-rc1: Aucun segment de mémoire partagée n'est attaché à l'adresse \fIshmaddr\fP, ou bien \fIshmaddr\fP n'est pas un multiple de la taille de page. .SH CONFORMITÉ .\" SVr4 documents an additional error condition EMFILE. POSIX.1\-2001, POSIX.1\-2008, SVr4. .PP In SVID 3 (or perhaps earlier), the type of the \fIshmaddr\fP argument was changed from \fIchar\ *\fP into \fIconst void\ *\fP, and the returned type of \fBshmat\fP() from \fIchar\ *\fP into \fIvoid\ *\fP. .SH NOTES .PP Après un \fBfork\fP(2), le fils hérite des segments de mémoire partagée. .PP Après un \fBexecve\fP(2), tous les segments de mémoire partagée sont détachés (pas détruits). .PP Lors d'un \fB_exit\fP(2), tous les segments de mémoire partagée sont détachés (pas détruits). .PP Utiliser \fBshmat\fP() avec \fIshmaddr\fP égale à NULL est la manière conseillée, portable, d'attacher un segment de mémoire partagée. Soyez conscients que le segment attaché de cette manière peut l'être à des adresses différentes dans les différents processus. Ainsi, tout pointeur contenu dans la mémoire partagée doit être relatif (typiquement par rapport au début du segment) et pas absolu. .PP On Linux, it is possible to attach a shared memory segment even if it is already marked to be deleted. However, POSIX.1 does not specify this behavior and many other implementations do not support it. .PP Le paramètre système suivant influe sur \fBshmat\fP()\ : .TP \fBSHMLBA\fP Segment low boundary address multiple. When explicitly specifying an attach address in a call to \fBshmat\fP(), the caller should ensure that the address is a multiple of this value. This is necessary on some architectures, in order either to ensure good CPU cache performance or to ensure that different attaches of the same segment have consistent views within the CPU cache. \fBSHMLBA\fP is normally some multiple of the system page size. (On many Linux architectures, \fBSHMLBA\fP is the same as the system page size.) .PP L'implémentation n'a pas de limite intrinsèque par processus pour le nombre maximal de segments de mémoire partagée (\fBSHMSEG\fP). .SH "VOIR AUSSI" \fBbrk\fP(2), \fBmmap\fP(2), \fBshmctl\fP(2), \fBshmget\fP(2), \fBcapabilities\fP(7), \fBshm_overview\fP(7), \fBsysvipc\fP(7) .SH COLOPHON Cette page fait partie de la publication\ 5.04 du projet \fIman\-pages\fP Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page peuvent être trouvées à l'adresse \%https://www.kernel.org/doc/man\-pages/. .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier et David Prévot . Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .