File: shmctl.2

package info (click to toggle)
manpages-fr 0.5-3
  • links: PTS
  • area: main
  • in suites: slink
  • size: 4,236 kB
  • ctags: 4
  • sloc: makefile: 55
file content (197 lines) | stat: -rw-r--r-- 6,402 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
.\" Copyright (c) 1993 Luigi P. Bai (lpb@softint.com) July 28, 1993
.\"
.\" 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.
.\"
.\" Modified Wed Jul 28 11:03:24 1993, Rik Faith (faith@cs.unc.edu)
.\" Modified Sun Nov 28 16:43:30 1993, Rik Faith (faith@cs.unc.edu)
.\"          with material from Giorgio Ciucci (giorgio@crcc.it)
.\" Portions Copyright 1993 Giorgio Ciucci (giorgio@crcc.it)
.\"
.\" Traduction 16/10/1996 par Christophe Blaess (ccb@club-internet.fr)
.\" Mise a Jour 15/04/97
.TH SHMCTL 2 "15 Avril 1997" Linux "Manuel du programmeur Linux"
.SH NOM
shmctl \- Controler la memoire partagee.
.SH SYNOPSIS
.ad l
.B #include <sys/ipc.h>
.sp
.B #include <sys/shm.h>
.sp
.BI "int shmctl(int " shmid ", int " cmd ", struct shmid_ds *" buf );
.ad b
.SH DESCRIPTION
\fBshmctl()\fP
permet a l'utilisateur d'obtenir des informations concernant un
segment de memoire partagee, ainsi que de fixer le proprietaire
le groupe et les permissions d'acces a ce segment. 
Cette fonction permet egalement de detruire un segment.

Les informations concernant le segment identifie par
\fIshmid\fP sont renvoyees dans une structure \fIshmid_ds\fP :
.PP
.in +0.5i
.nf
struct shmid_ds {
  struct          ipc_perm shm_perm; /* Permissions d'acces       */
  int             shm_segsz;         /* Taille segment en octets  */
  time_t          shm_atime;         /* Heure dernier attachement */
  time_t          shm_dtime;         /* Heure dernier detachement */
  time_t          shm_ctime;         /* Heure dernier changement  */
  unsigned short  shm_cpid;          /* PID du createur           */
  unsigned short  shm_lpid;          /* PID du dernier operateur  */
  short           shm_nattch;        /* Nombre d'attachements     */
  /* ------------- Les champs suivants sont prives -------------- */
  unsigned short  shm_npages;        /* Taille segment en pages   */
  unsigned long   *shm_pages;        /* Taille d'une page (?)     */
  struct shm_desc *attaches;         /* Descript. attachements    */
};
.fi
.in -0.5i
.PP
Le champ \fIshm_perm\fP a la forme suivante :
.PP
.in +0.5i
.nf
struct ipc_perm
{
  key_t  key;
  ushort uid;   /* UID et GID effectifs du proprietaire    */
  ushort gid;
  ushort cuid;  /* UID et GID effectif du createur         */
  ushort cgid;
  ushort mode;  /* Mode d'acces sur 9 bits de poids faible */
  ushort seq;   /* numero de sequence                      */
};
.fi
.PP
Les commandes \fIcmd\fP suivantes sont disponibles :
.br
.TP 12
.B IPC_STAT
permet de recuperer dans le buffer \fIbuf\fP les informations
concernant le segment de memoire partagee.
L'apellant doit avoir la permission d'acces en lecture sur
le segment.
.TP
.B IPC_SET
sert a appliquer les changements que l'utilisateur a apportes dans
les champs \fIuid\fP, \fIgid\fP,ou \fImode\fP 
de la structure \fIshm_perms\fP.  Seuls les 9 bits de poids
faibles sont utilises dans \fImode\fP. Le membre
.I shm_ctime
est aussi mis a jour.
L'appelant doit etre le createur du segment, son proprietaire, ou
le Super\-User.
.TP
.B IPC_RMID
permet de considerer un segment comme detruit. Il sera detruit
effectivement apres le dernier detachement (quand le membre
.I shm_nattch
de la structure
.I shmid_ds
associee vaudra zero.)  
L'appelant doit etre le createur du segment, son proprietaire, ou
le Super\-User.
.PP
Attention, meme apres le dernier detachement, le contenu du segment
n'est pas efface par le systeme. Un processus realisant a nouveau
un attachement recuperera son contenu. Il est a la charge du processus
l'utilisateur d'ecraser le contenu du segment s'il ne veut pas qu'il
persiste.
.PP
De plus  le \fBSuper\-User\fP peut autoriser ou interdire le
swapping d'un segment avec les commandes suivantes 
(specifique Linux) :
.br
.TP 12
.B SHM_LOCK
empeche le swapping d'un segment de memoire partagee. L'appelant
doit consulter chaque page concernee apres avoir effectue le
verrouillage pour s'assurer qu'elle soit bien presente en memoire.
.TP
.B SHM_UNLOCK
reautorise le swapping d'un segment. 
.PP
Les appels systemes
.BR IPC_INFO ,
.BR IPC_STAT
et
.B IPC_RMID
sont utilises par le programme
.BR ipcs (8)
afin d'obtenir des informations sur les ressources allouees.
.PP
.SH "AUTRES APPELS SYSTEMES"
.TP
.B fork()
Apres un
.B fork()
le fils herite des segments de memoire partagee.
.TP
.B exec()
Apres un
.B exec()
tous les segments de memoire partagee sont detaches (pas detruits).
.TP
.B exit()
Lors d'un
.B exit()
tous les segments de memoire partagee sont detaches (pas detruits).
.PP
.SH "VALEUR RENVOYEE"
.B shmctl
renvoie 0 s'il reussit et \-1 s'il echoue, auquel cas
.I errno
contient le code d'erreur.
.SH ERREURS
.TP 12
.B EACCES
on demande \fBIPC_STAT\fP mais
\fIshm_perm.modes\fP ne permet pas la lecture du segment
.IR shmid .
.TP
.B EFAULT
.I cmd
a la valeur
.B IPC_SET
ou
.B IPC_STAT
mais
.I buf
pointe en\-dehors de l'espace d'adressage accessible.
.TP
.B EINVAL
\fIshmid\fP n'est pas un identificateur de segment valide,
ou \fIcmd\fP n'est pas une commande reconnue.
.TP
.B EIDRM
\fIshmid\fP pointe sur un segment detruit.
.TP
.B EPERM
On reclame \fBIPC_SET\fP ou \fBIPC_RMID\fP mais l'appelant n'est
ni le proprietaire du segment, ni son createur, ni le Super\-User.
.SH CONFORMITE
SVr4, SVID. SVr4 mentionne des conditions d'erreur supplementaires
ENOENT, ENOSPC, ENOMEM, EEXIST. Ni SVr4, ni SVID ne documentent la
condition d'erreur EIDRM.
.SH "VOIR AUSSI"
.BR shmget "(2), " shmop (2)