File: clone.2

package info (click to toggle)
manpages-fr 0.8-1
  • links: PTS
  • area: main
  • in suites: potato
  • size: 5,760 kB
  • ctags: 4
  • sloc: makefile: 57; sh: 8
file content (224 lines) | stat: -rw-r--r-- 7,123 bytes parent folder | download
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
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
.\" Hey Emacs! This file is -*- nroff -*- source.
.\"
.\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992
.\" May be distributed under the GNU General Public License.
.\" Modified by Michael Haardt (u31b3hs@pool.informatik.rwth-aachen.de)
.\" Modified Sat Jul 24 13:22:07 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified 21 Aug 1994 by Michael Chastain (mec@shell.portal.com):
.\"   New man page (copied from 'fork.2').
.\" Modified 10 June 1995 by Andries Brouwer (aeb@cwi.nl)
.\"
.\" Traduction 14/10/1996 par Christophe Blaess (ccb@club-internet.fr)
.\" Mise  jour 18/09/1998 - LDP-man-pages-1.20
.TH CLONE 2 "18 Septembre 1998" "Linux" "Manuel du programmeur Linux"
.SH NOM
__clone \- Crer un processus fils (child).
.SH SYNOPSIS
.B #include <linux/sched.h>
.sp
.BI "int __clone(int (*" "fn" ") (void *" "arg" "), void *" "pile_fils" ", int " "flags" ", void *" "arg" ")"
.SH DESCRIPTION
.B __clone
cree un nouveau processus, comme le fait
.BR fork (2).
Contrairement  celui-ci, 
.B __clone
permet le partage d'une partie du contexte d'excution entre le processus pre
et le processus fils. Le partage peut s'appliquer sur l'espace mmoire, sur
la table des descripteurs de fichiers, la table des gestionnaires de signaux...

L'appel systme
.B __clone
est principalement utilis pour permettre l'implmentation des threads : 
un programme est scind en plusieures lignes de contrle, s'excutant
simultanment dans un espace de mmoire partage.

Quand le processus fils est cr, il excute la fonction
.IR fn ( arg ).
L'argument
.I fn
est un pointeur sur la fonction appele par le processus fils lors de son
dmarrage.
L'argument
.I arg
est transmis  la fonction
.I fn
lors de son invocation.

Quand la fonction
.IR fn ( arg )
revient, le processus fils se termine. La valeur entire renvoye par
.I fn
est utilise comme code de retour du processus fils. Ce dernier peut
galement se terminer de manire explicite en invoquant la fonction
.BR exit (2)
ou aprs la rception d'un signal fatal.

L'argument
.I pile_fils
indique l'emplacement de la pile utilise par le processus fils.
Comme les processus pre et fils peuvent partager de la mmoire,
il n'est gnralement pas possible pour le fils d'utiliser la mme
pile que son pre. Le processus parent doit donc prparer un espace
mmoire pour stocker la pile de son fils, et transmettre 
.B __clone
un pointeur sur cet emplacement.

Les piles croissent vers le bas sur tous les processeurs implmentant
Linux (sauf le HP PA), donc
.I pile_fils
doit pointer sur la plus haute adresse de l'espace mmoire prvu pour 
la pile du processus fils.

L'octet de poids faible de
.I flags
contient le numro du signal qui sera envoy au pre lorsque le processus
fils se terminera.
.I flags
permet galement de prciser ce qui sera partag entre le pre et le fils,
en effectuant un OU binaire entre une ou plusieurs des constantes suivantes :

.TP
.B CLONE_VM
Si le bit
.B CLONE_VM
est actif, les processus pre et fils s'excutent dans le mme espace mmoire.
En particulier, les critures en mmoire effectues par l'un des processus sont
visibles par l'autre.
De mme toute projection en mmoire, ou toute suppression de projection,
effectues avec
.BR mmap (2)
ou
.BR munmap (2)
par l'un des processus affectera galement l'autre processus.

Si
.B CLONE_VM
n'est pas actif, le processus fils utilisera une copie distincte de l'espace
mmoire de son pre. Le clich tant ralis lors de l'invocation de
.BR __clone .
Les critures ou les projections de fichiers en mmoire effectues par un processus
n'affectent pas l'autre processus, comme cela se passe avec
.BR fork (2).

.TP
.B CLONE_FS
Si l'attribut
.B CLONE_FS
est positionn, les processus pre et fils partagent les mmes informations
concernant le systme de fichiers. Ceci inclue la racine du systme de
fichiers, le rpertoire de travail, et l'umask. Tout appel 
.BR chroot (2),
.BR chdir (2),
ou
.BR umask (2)
effectu par un processus aura galement influence sur l'autre processus.

Si
.B CLONE_FS
n'est pas choisi, le processus travaille sur une copie des informations du pre
concernant le systme de fichiers. Cette copie est effectue lors de
l'invocation de
.BR __clone .
Les appels 
.BR chroot (2), chdir (2), umask (2)
effectus par un processus n'affectent pas l'autre processus.

.TP
.B CLONE_FILES
Si l'attribut
.B CLONE_FILES
est positionn, les processus pre et fils partagent la mme table des
descripteurs de fichiers. Les descripteurs feront alors toujours rfrence
aux mmes fichiers pour les deux processus. Tout decripteur cr par
un processus est galement valide pour l'autre processus. De mme si
un processus ferme un descripteur, ou modifie ses attributs, l'autre
processus en est aussi affect.

Si
.B CLONE_FILES
n'est pas positionn, le processus fils hrite d'une copie des descripteurs
de fichiers ouverts par son pre au moment de l'appel
.BR __clone .
Les oprations effectues ensuite sur un descripteur par un des processus
n'affectent pas l'autre processus.

.TP
.B CLONE_SIGHAND
Si l'attribut
.B CLONE_SIGHAND
est positionn, les processus pre et fils partagent la mme table des
gestionnaires de signaux. Si le pre, ou le fils, appelle
.BR sigaction (2)
pour modifier le comportement associ  un signal, ce comportement est
galement chang pour l'autre processus. Nanmoins, le pre et le
fils ont toujours des masques de signaux distincts, et leurs ensembles
de signaux bloqus sont indpendants.
L'un des processus peut donc bloquer un signal en utilisant
.BR sigprocmask (2)
sans affecter l'autre processus.

Si
.B CLONE_SIGHAND
n'est pas utilis, le processus fils hrite d'une copie des gestionnaires
de signaux de son pre lors de l'invocation de
.BR __clone .
Les appels 
.BR sigaction (2)
effectus ensuite depuis un processus n'ont pas d'effets sur l'autre
processus.

.TP
.B CLONE_PID
Si l'attribut
.B CLONE_PID
est positionn, les processus pre et fils ont le mme numro de processus.

Si
.B CLONE_PID
n'est pas slectionn, le processus fils possde un identificateur unique,
distinct de celui de son pre.

.SH "VALEUR RENVOYE"
.BR clone
S'il russit, renvoie le PID du processus fils au processus
pre, et 0 au processus fils.
En cas d'chec  
.BR clone 
renvoie \-1 au processus pre, aucun processus fils n'est cr, et
.I errno
contient le code d'erreur.
.SH ERREURS
.TP
.B ENOSYS
.B clone
dclenchera toujours cette erreur  moins que le noyau n'ait t
compil avec la constante symbolique 
.B CLONE_ACTUALLY_WORKS_OK
dfinie.
.TP
.B EAGAIN
Pas assez de mmoire pour copier les tables de pages du
processus parent et allouer une structure de tche pour
le processus fils.
.SH BUGS
Par dfaut
.B CLONE_ACTUALLY_WORKS_OK
n'est pas dfini.
.br
Il n'y a pas de dfinition pour
.B clone
dans
.BR libc.so.4.5.26 .
.br
Les commentaires dans le noyau (1.1.46) indiquent que le cas o
.B COPYVM
n'est pas dfini est mal gr.
.SH CONFORMIT
Cet appel-systme est spcifique  Linux et ne doit pas tre
employ dans des programmes portables.
.SH "VOIR AUSSI"
.BR fork (2)

.SH TRADUCTION
Christophe Blaess, 1997.