OSDN Git Service

LDP: Address fuzzy changes (sched)
[linuxjm/jm.git] / manual / LDP_man-pages / po4a / sched / po / ja.po
1 # SOME DESCRIPTIVE TITLE
2 # Copyright (C) YEAR Free Software Foundation, Inc.
3 # This file is distributed under the same license as the PACKAGE package.
4 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5 #
6 msgid ""
7 msgstr ""
8 "Project-Id-Version: PACKAGE VERSION\n"
9 "POT-Creation-Date: 2021-03-12 14:00+0900\n"
10 "PO-Revision-Date: 2021-04-07 23:45+0900\n"
11 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12 "Language-Team: LANGUAGE <LL@li.org>\n"
13 "Language: \n"
14 "MIME-Version: 1.0\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
17
18 #. type: TH
19 #: build/C/man3/CPU_SET.3:27
20 #, no-wrap
21 msgid "CPU_SET"
22 msgstr "CPU_SET"
23
24 #. type: TH
25 #: build/C/man3/CPU_SET.3:27 build/C/man2/clone.2:42 build/C/man2/kcmp.2:28
26 #: build/C/man2/sched_setaffinity.2:34 build/C/man2/sched_setattr.2:26
27 #, no-wrap
28 msgid "2020-11-01"
29 msgstr "2020-11-01"
30
31 #. type: TH
32 #: build/C/man3/CPU_SET.3:27 build/C/man2/clone.2:42 build/C/man2/kcmp.2:28
33 #: build/C/man2/sched_get_priority_max.2:29 build/C/man3/sched_getcpu.3:26
34 #: build/C/man2/sched_rr_get_interval.2:29 build/C/man2/sched_setaffinity.2:34
35 #: build/C/man2/sched_setattr.2:26 build/C/man2/sched_setparam.2:30
36 #: build/C/man2/sched_setscheduler.2:26 build/C/man2/sched_yield.2:29
37 #: build/C/man7/sched.7:32 build/C/man2/setns.2:8 build/C/man2/unshare.2:20
38 #, no-wrap
39 msgid "Linux"
40 msgstr "Linux"
41
42 #. type: TH
43 #: build/C/man3/CPU_SET.3:27 build/C/man2/clone.2:42 build/C/man2/kcmp.2:28
44 #: build/C/man2/sched_get_priority_max.2:29 build/C/man3/sched_getcpu.3:26
45 #: build/C/man2/sched_rr_get_interval.2:29 build/C/man2/sched_setaffinity.2:34
46 #: build/C/man2/sched_setattr.2:26 build/C/man2/sched_setparam.2:30
47 #: build/C/man2/sched_setscheduler.2:26 build/C/man2/sched_yield.2:29
48 #: build/C/man7/sched.7:32 build/C/man2/setns.2:8 build/C/man2/unshare.2:20
49 #, no-wrap
50 msgid "Linux Programmer's Manual"
51 msgstr "Linux Programmer's Manual"
52
53 #. type: SH
54 #: build/C/man3/CPU_SET.3:28 build/C/man2/clone.2:43 build/C/man2/kcmp.2:29
55 #: build/C/man2/sched_get_priority_max.2:30 build/C/man3/sched_getcpu.3:27
56 #: build/C/man2/sched_rr_get_interval.2:30 build/C/man2/sched_setaffinity.2:35
57 #: build/C/man2/sched_setattr.2:27 build/C/man2/sched_setparam.2:31
58 #: build/C/man2/sched_setscheduler.2:27 build/C/man2/sched_yield.2:30
59 #: build/C/man7/sched.7:33 build/C/man2/setns.2:9 build/C/man2/unshare.2:21
60 #, no-wrap
61 msgid "NAME"
62 msgstr "名前"
63
64 #. type: Plain text
65 #: build/C/man3/CPU_SET.3:35
66 msgid ""
67 "CPU_SET, CPU_CLR, CPU_ISSET, CPU_ZERO, CPU_COUNT, CPU_AND, CPU_OR, CPU_XOR, "
68 "CPU_EQUAL, CPU_ALLOC, CPU_ALLOC_SIZE, CPU_FREE, CPU_SET_S, CPU_CLR_S, "
69 "CPU_ISSET_S, CPU_ZERO_S, CPU_COUNT_S, CPU_AND_S, CPU_OR_S, CPU_XOR_S, "
70 "CPU_EQUAL_S - macros for manipulating CPU sets"
71 msgstr ""
72 "CPU_SET, CPU_CLR, CPU_ISSET, CPU_ZERO, CPU_COUNT, CPU_AND, CPU_OR, CPU_XOR, "
73 "CPU_EQUAL, CPU_ALLOC, CPU_ALLOC_SIZE, CPU_FREE, CPU_SET_S, CPU_CLR_S, "
74 "CPU_ISSET_S, CPU_ZERO_S, CPU_COUNT_S, CPU_AND_S, CPU_OR_S, CPU_XOR_S, "
75 "CPU_EQUAL_S - CPU 集合を操作するためのマクロ"
76
77 #. type: SH
78 #: build/C/man3/CPU_SET.3:35 build/C/man2/clone.2:45 build/C/man2/kcmp.2:31
79 #: build/C/man2/sched_get_priority_max.2:32 build/C/man3/sched_getcpu.3:29
80 #: build/C/man2/sched_rr_get_interval.2:32 build/C/man2/sched_setaffinity.2:38
81 #: build/C/man2/sched_setattr.2:30 build/C/man2/sched_setparam.2:33
82 #: build/C/man2/sched_setscheduler.2:30 build/C/man2/sched_yield.2:32
83 #: build/C/man2/setns.2:11 build/C/man2/unshare.2:23
84 #, no-wrap
85 msgid "SYNOPSIS"
86 msgstr "書式"
87
88 #. type: Plain text
89 #: build/C/man3/CPU_SET.3:39 build/C/man2/sched_setaffinity.2:42
90 #: build/C/man2/setns.2:15
91 #, no-wrap
92 msgid ""
93 "B<#define _GNU_SOURCE>             /* See feature_test_macros(7) */\n"
94 "B<#include E<lt>sched.hE<gt>>\n"
95 msgstr ""
96 "B<#define _GNU_SOURCE>             /* feature_test_macros(7) 参照 */\n"
97 "B<#include E<lt>sched.hE<gt>>\n"
98
99 #. type: Plain text
100 #: build/C/man3/CPU_SET.3:41
101 #, no-wrap
102 msgid "B<void CPU_ZERO(cpu_set_t *>I<set>B<);>\n"
103 msgstr "B<void CPU_ZERO(cpu_set_t *>I<set>B<);>\n"
104
105 #. type: Plain text
106 #: build/C/man3/CPU_SET.3:45
107 #, no-wrap
108 msgid ""
109 "B<void CPU_SET(int >I<cpu>B<, cpu_set_t *>I<set>B<);>\n"
110 "B<void CPU_CLR(int >I<cpu>B<, cpu_set_t *>I<set>B<);>\n"
111 "B<int  CPU_ISSET(int >I<cpu>B<, cpu_set_t *>I<set>B<);>\n"
112 msgstr ""
113 "B<void CPU_SET(int >I<cpu>B<, cpu_set_t *>I<set>B<);>\n"
114 "B<void CPU_CLR(int >I<cpu>B<, cpu_set_t *>I<set>B<);>\n"
115 "B<int  CPU_ISSET(int >I<cpu>B<, cpu_set_t *>I<set>B<);>\n"
116
117 #. type: Plain text
118 #: build/C/man3/CPU_SET.3:47
119 #, no-wrap
120 msgid "B<int  CPU_COUNT(cpu_set_t *>I<set>B<);>\n"
121 msgstr "B<int  CPU_COUNT(cpu_set_t *>I<set>B<);>\n"
122
123 #. type: Plain text
124 #: build/C/man3/CPU_SET.3:54
125 #, no-wrap
126 msgid ""
127 "B<void CPU_AND(cpu_set_t *>I<destset>B<,>\n"
128 "B<             cpu_set_t *>I<srcset1>B<, cpu_set_t *>I<srcset2>B<);>\n"
129 "B<void CPU_OR(cpu_set_t *>I<destset>B<,>\n"
130 "B<             cpu_set_t *>I<srcset1>B<, cpu_set_t *>I<srcset2>B<);>\n"
131 "B<void CPU_XOR(cpu_set_t *>I<destset>B<,>\n"
132 "B<             cpu_set_t *>I<srcset1>B<, cpu_set_t *>I<srcset2>B<);>\n"
133 msgstr ""
134 "B<void CPU_AND(cpu_set_t *>I<destset>B<,>\n"
135 "B<             cpu_set_t *>I<srcset1>B<, cpu_set_t *>I<srcset2>B<);>\n"
136 "B<void CPU_OR(cpu_set_t *>I<destset>B<,>\n"
137 "B<             cpu_set_t *>I<srcset1>B<, cpu_set_t *>I<srcset2>B<);>\n"
138 "B<void CPU_XOR(cpu_set_t *>I<destset>B<,>\n"
139 "B<             cpu_set_t *>I<srcset1>B<, cpu_set_t *>I<srcset2>B<);>\n"
140
141 #. type: Plain text
142 #: build/C/man3/CPU_SET.3:56
143 #, no-wrap
144 msgid "B<int  CPU_EQUAL(cpu_set_t *>I<set1>B<, cpu_set_t *>I<set2>B<);>\n"
145 msgstr "B<int  CPU_EQUAL(cpu_set_t *>I<set1>B<, cpu_set_t *>I<set2>B<);>\n"
146
147 #. type: Plain text
148 #: build/C/man3/CPU_SET.3:60
149 #, no-wrap
150 msgid ""
151 "B<cpu_set_t *CPU_ALLOC(int >I<num_cpus>B<);>\n"
152 "B<void CPU_FREE(cpu_set_t *>I<set>B<);>\n"
153 "B<size_t CPU_ALLOC_SIZE(int >I<num_cpus>B<);>\n"
154 msgstr ""
155 "B<cpu_set_t *CPU_ALLOC(int >I<num_cpus>B<);>\n"
156 "B<void CPU_FREE(cpu_set_t *>I<set>B<);>\n"
157 "B<size_t CPU_ALLOC_SIZE(int >I<num_cpus>B<);>\n"
158
159 #. type: Plain text
160 #: build/C/man3/CPU_SET.3:62
161 #, no-wrap
162 msgid "B<void CPU_ZERO_S(size_t >I<setsize>B<, cpu_set_t *>I<set>B<);>\n"
163 msgstr "B<void CPU_ZERO_S(size_t >I<setsize>B<, cpu_set_t *>I<set>B<);>\n"
164
165 #. type: Plain text
166 #: build/C/man3/CPU_SET.3:66
167 #, no-wrap
168 msgid ""
169 "B<void CPU_SET_S(int >I<cpu>B<, size_t >I<setsize>B<, cpu_set_t *>I<set>B<);>\n"
170 "B<void CPU_CLR_S(int >I<cpu>B<, size_t >I<setsize>B<, cpu_set_t *>I<set>B<);>\n"
171 "B<int  CPU_ISSET_S(int >I<cpu>B<, size_t >I<setsize>B<, cpu_set_t *>I<set>B<);>\n"
172 msgstr ""
173 "B<void CPU_SET_S(int >I<cpu>B<, size_t >I<setsize>B<, cpu_set_t *>I<set>B<);>\n"
174 "B<void CPU_CLR_S(int >I<cpu>B<, size_t >I<setsize>B<, cpu_set_t *>I<set>B<);>\n"
175 "B<int  CPU_ISSET_S(int >I<cpu>B<, size_t >I<setsize>B<, cpu_set_t *>I<set>B<);>\n"
176
177 #. type: Plain text
178 #: build/C/man3/CPU_SET.3:68
179 #, no-wrap
180 msgid "B<int  CPU_COUNT_S(size_t >I<setsize>B<, cpu_set_t *>I<set>B<);>\n"
181 msgstr "B<int  CPU_COUNT_S(size_t >I<setsize>B<, cpu_set_t *>I<set>B<);>\n"
182
183 #. type: Plain text
184 #: build/C/man3/CPU_SET.3:75
185 #, no-wrap
186 msgid ""
187 "B<void CPU_AND_S(size_t >I<setsize>B<, cpu_set_t *>I<destset>B<,>\n"
188 "B<             cpu_set_t *>I<srcset1>B<, cpu_set_t *>I<srcset2>B<);>\n"
189 "B<void CPU_OR_S(size_t >I<setsize>B<, cpu_set_t *>I<destset>B<,>\n"
190 "B<             cpu_set_t *>I<srcset1>B<, cpu_set_t *>I<srcset2>B<);>\n"
191 "B<void CPU_XOR_S(size_t >I<setsize>B<, cpu_set_t *>I<destset>B<,>\n"
192 "B<             cpu_set_t *>I<srcset1>B<, cpu_set_t *>I<srcset2>B<);>\n"
193 msgstr ""
194 "B<void CPU_AND_S(size_t >I<setsize>B<, cpu_set_t *>I<destset>B<,>\n"
195 "B<             cpu_set_t *>I<srcset1>B<, cpu_set_t *>I<srcset2>B<);>\n"
196 "B<void CPU_OR_S(size_t >I<setsize>B<, cpu_set_t *>I<destset>B<,>\n"
197 "B<             cpu_set_t *>I<srcset1>B<, cpu_set_t *>I<srcset2>B<);>\n"
198 "B<void CPU_XOR_S(size_t >I<setsize>B<, cpu_set_t *>I<destset>B<,>\n"
199 "B<             cpu_set_t *>I<srcset1>B<, cpu_set_t *>I<srcset2>B<);>\n"
200
201 #. type: Plain text
202 #: build/C/man3/CPU_SET.3:78
203 #, no-wrap
204 msgid "B<int  CPU_EQUAL_S(size_t >I<setsize>B<, cpu_set_t *>I<set1>B<, cpu_set_t *>I<set2>B<);>\n"
205 msgstr "B<int  CPU_EQUAL_S(size_t >I<setsize>B<, cpu_set_t *>I<set1>B<, cpu_set_t *>I<set2>B<);>\n"
206
207 #. type: SH
208 #: build/C/man3/CPU_SET.3:79 build/C/man2/clone.2:66 build/C/man2/kcmp.2:41
209 #: build/C/man2/sched_get_priority_max.2:38 build/C/man3/sched_getcpu.3:55
210 #: build/C/man2/sched_rr_get_interval.2:36 build/C/man2/sched_setaffinity.2:49
211 #: build/C/man2/sched_setattr.2:41 build/C/man2/sched_setparam.2:47
212 #: build/C/man2/sched_setscheduler.2:39 build/C/man2/sched_yield.2:36
213 #: build/C/man7/sched.7:35 build/C/man2/setns.2:18 build/C/man2/unshare.2:30
214 #, no-wrap
215 msgid "DESCRIPTION"
216 msgstr "説明"
217
218 #. type: Plain text
219 #: build/C/man3/CPU_SET.3:86
220 msgid ""
221 "The I<cpu_set_t> data structure represents a set of CPUs.  CPU sets are used "
222 "by B<sched_setaffinity>(2)  and similar interfaces."
223 msgstr ""
224 "I<cpu_set_t> データ構造体は CPU 集合を表現している。 CPU 集合は "
225 "B<sched_setaffinity>(2) や同様のインターフェースで使用されている。"
226
227 #. type: Plain text
228 #: build/C/man3/CPU_SET.3:93
229 msgid ""
230 "The I<cpu_set_t> data type is implemented as a bit mask.  However, the data "
231 "structure should be treated as opaque: all manipulation of CPU sets should "
232 "be done via the macros described in this page."
233 msgstr "I<cpu_set_t> データ型はビットマスクとして実装されている。 しかし、 データ構造体はその実装を意識せずに扱うべきであり、 CPU 集合のすべての操作は、 このページで説明されているマクロを通して行うべきである。"
234
235 #. type: Plain text
236 #: build/C/man3/CPU_SET.3:96
237 msgid "The following macros are provided to operate on the CPU set I<set>:"
238 msgstr "以下のマクロが CPU 集合 I<set> を操作するために提供されている。"
239
240 #. type: TP
241 #: build/C/man3/CPU_SET.3:96
242 #, no-wrap
243 msgid "B<CPU_ZERO>()"
244 msgstr "B<CPU_ZERO>()"
245
246 #. type: Plain text
247 #: build/C/man3/CPU_SET.3:101
248 msgid "Clears I<set>, so that it contains no CPUs."
249 msgstr "I<set> をクリアする。 集合には何も CPU が含まれない状態となる。"
250
251 #. type: TP
252 #: build/C/man3/CPU_SET.3:101
253 #, no-wrap
254 msgid "B<CPU_SET>()"
255 msgstr "B<CPU_SET>()"
256
257 #. type: Plain text
258 #: build/C/man3/CPU_SET.3:107
259 msgid "Add CPU I<cpu> to I<set>."
260 msgstr "I<set> に I<cpu> を追加する。"
261
262 #. type: TP
263 #: build/C/man3/CPU_SET.3:107
264 #, no-wrap
265 msgid "B<CPU_CLR>()"
266 msgstr "B<CPU_CLR>()"
267
268 #. type: Plain text
269 #: build/C/man3/CPU_SET.3:113
270 msgid "Remove CPU I<cpu> from I<set>."
271 msgstr "I<set> から I<cpu> を削除する。"
272
273 #. type: TP
274 #: build/C/man3/CPU_SET.3:113
275 #, no-wrap
276 msgid "B<CPU_ISSET>()"
277 msgstr "B<CPU_ISSET>()"
278
279 #. type: Plain text
280 #: build/C/man3/CPU_SET.3:119
281 msgid "Test to see if CPU I<cpu> is a member of I<set>."
282 msgstr "CPU I<cpu> が I<set> のメンバーであるかを検査する。"
283
284 #. type: TP
285 #: build/C/man3/CPU_SET.3:119
286 #, no-wrap
287 msgid "B<CPU_COUNT>()"
288 msgstr "B<CPU_COUNT>()"
289
290 #. type: Plain text
291 #: build/C/man3/CPU_SET.3:123
292 msgid "Return the number of CPUs in I<set>."
293 msgstr "I<set> に含まれる CPU 数を返す。"
294
295 #. type: Plain text
296 #: build/C/man3/CPU_SET.3:128
297 msgid ""
298 "Where a I<cpu> argument is specified, it should not produce side effects, "
299 "since the above macros may evaluate the argument more than once."
300 msgstr ""
301 "I<cpu> 引き数が指定する場合、 その引き数は副作用を伴うべきではない。 上記のマ"
302 "クロは引き数を複数回評価する可能性があるからである。"
303
304 #. type: Plain text
305 #: build/C/man3/CPU_SET.3:142
306 #, fuzzy
307 #| msgid ""
308 #| "The first available CPU on the system corresponds to a I<cpu> value of 0, "
309 #| "the next CPU corresponds to a I<cpu> value of 1, and so on.  The constant "
310 #| "B<CPU_SETSIZE> (currently 1024) specifies a value one greater than the "
311 #| "maximum CPU number that can be stored in I<cpu_set_t>."
312 msgid ""
313 "The first CPU on the system corresponds to a I<cpu> value of 0, the next CPU "
314 "corresponds to a I<cpu> value of 1, and so on.  No assumptions should be "
315 "made about particular CPUs being available, or the set of CPUs being "
316 "contiguous, since CPUs can be taken offline dynamically or be otherwise "
317 "absent.  The constant B<CPU_SETSIZE> (currently 1024) specifies a value one "
318 "greater than the maximum CPU number that can be stored in I<cpu_set_t>."
319 msgstr ""
320 "そのシステムで利用可能な最初の CPU が I<cpu> 値 0 に対応し、 次の CPU が "
321 "I<cpu> 値 1 に対応し、 以降も同様である。 定数 B<CPU_SETSIZE> (現在のところ "
322 "1024) は I<cpu_set_t> に格納できる最大 CPU 数よりも大きな値である。"
323
324 #. type: Plain text
325 #: build/C/man3/CPU_SET.3:144
326 msgid "The following macros perform logical operations on CPU sets:"
327 msgstr "以下のマクロは CPU 集合どうしの論理操作を行う。"
328
329 #. type: TP
330 #: build/C/man3/CPU_SET.3:144
331 #, no-wrap
332 msgid "B<CPU_AND>()"
333 msgstr "B<CPU_AND>()"
334
335 #. type: Plain text
336 #: build/C/man3/CPU_SET.3:153
337 msgid ""
338 "Store the intersection of the sets I<srcset1> and I<srcset2> in I<destset> "
339 "(which may be one of the source sets)."
340 msgstr ""
341 "集合 I<srcset1> と I<srcset2> の積集合を I<destset> に格納する (元の集合のい"
342 "ずれかが I<destset> として使用される場合もある)。"
343
344 #. type: TP
345 #: build/C/man3/CPU_SET.3:153
346 #, no-wrap
347 msgid "B<CPU_OR>()"
348 msgstr "B<CPU_OR>()"
349
350 #. type: Plain text
351 #: build/C/man3/CPU_SET.3:162
352 msgid ""
353 "Store the union of the sets I<srcset1> and I<srcset2> in I<destset> (which "
354 "may be one of the source sets)."
355 msgstr ""
356 "集合 I<srcset1> と I<srcset2> の和集合を I<destset> に格納する (元の集合のい"
357 "ずれかが I<destset> として使用される場合もある)。"
358
359 #. type: TP
360 #: build/C/man3/CPU_SET.3:162
361 #, no-wrap
362 msgid "B<CPU_XOR>()"
363 msgstr "B<CPU_XOR>()"
364
365 #. type: Plain text
366 #: build/C/man3/CPU_SET.3:176
367 msgid ""
368 "Store the XOR of the sets I<srcset1> and I<srcset2> in I<destset> (which may "
369 "be one of the source sets).  The XOR means the set of CPUs that are in "
370 "either I<srcset1> or I<srcset2>, but not both."
371 msgstr ""
372 "集合 I<srcset1> と I<srcset2> の XOR を I<destset> に格納する (元の集合のいず"
373 "れかが I<destset> として使用される場合もある)。 XOR とは、 I<srcset1> か "
374 "I<srcset2> のいずれかに含まれるが、両方には含まれない集合のことである。"
375
376 #. type: TP
377 #: build/C/man3/CPU_SET.3:176
378 #, no-wrap
379 msgid "B<CPU_EQUAL>()"
380 msgstr "B<CPU_EQUAL>()"
381
382 #. type: Plain text
383 #: build/C/man3/CPU_SET.3:179
384 msgid "Test whether two CPU set contain exactly the same CPUs."
385 msgstr "二つの CPU 集合が全く同じ CPU を含んでいるかを検査する。"
386
387 #. type: SS
388 #: build/C/man3/CPU_SET.3:179
389 #, no-wrap
390 msgid "Dynamically sized CPU sets"
391 msgstr "動的に大きさが決まる CPU 集合"
392
393 #. type: Plain text
394 #: build/C/man3/CPU_SET.3:185
395 msgid ""
396 "Because some applications may require the ability to dynamically size CPU "
397 "sets (e.g., to allocate sets larger than that defined by the standard "
398 "I<cpu_set_t> data type), glibc nowadays provides a set of macros to support "
399 "this."
400 msgstr ""
401 "いくつかのアプリケーションでは CPU 集合の大きさを動的に決める能力 (例えば、 "
402 "標準の I<cpu_set_t> データ型で定義されたよりも大きい集合を割り当てるなど) が"
403 "必要となることがあるため、 現在 glibc はこれに対応するためにいくつかのマクロ"
404 "を提供している。"
405
406 #. type: Plain text
407 #: build/C/man3/CPU_SET.3:187
408 msgid "The following macros are used to allocate and deallocate CPU sets:"
409 msgstr "以下のマクロを使うと CPU 集合の割り当てと解放ができる。"
410
411 #. type: TP
412 #: build/C/man3/CPU_SET.3:187
413 #, no-wrap
414 msgid "B<CPU_ALLOC>()"
415 msgstr "B<CPU_ALLOC>()"
416
417 #. type: Plain text
418 #: build/C/man3/CPU_SET.3:192
419 msgid ""
420 "Allocate a CPU set large enough to hold CPUs in the range 0 to I<num_cpus-1>."
421 msgstr ""
422 "0 から I<num_cpus-1> までの範囲の CPU を保持するのに十分な大きさの CPU 集合を"
423 "割り当てる。"
424
425 #. type: TP
426 #: build/C/man3/CPU_SET.3:192
427 #, no-wrap
428 msgid "B<CPU_ALLOC_SIZE>()"
429 msgstr "B<CPU_ALLOC_SIZE>()"
430
431 #. type: Plain text
432 #: build/C/man3/CPU_SET.3:202
433 msgid ""
434 "Return the size in bytes of the CPU set that would be needed to hold CPUs in "
435 "the range 0 to I<num_cpus-1>.  This macro provides the value that can be "
436 "used for the I<setsize> argument in the B<CPU_*_S>()  macros described below."
437 msgstr ""
438 "0 から I<num_cpus-1> までの範囲の CPU を保持するのに必要な CPU 集合の大きさを"
439 "バイト数で返す。 このマクロが返す値は、 後述の B<CPU_*_S>() マクロの "
440 "I<setsize> 引き数として使用できる。"
441
442 #. type: TP
443 #: build/C/man3/CPU_SET.3:202
444 #, no-wrap
445 msgid "B<CPU_FREE>()"
446 msgstr "B<CPU_FREE>()"
447
448 #. type: Plain text
449 #: build/C/man3/CPU_SET.3:206
450 msgid "Free a CPU set previously allocated by B<CPU_ALLOC>()."
451 msgstr "以前に B<CPU_ALLOC>() で割り当てられた CPU 集合を解放する。"
452
453 #. type: Plain text
454 #: build/C/man3/CPU_SET.3:213
455 msgid ""
456 "The macros whose names end with \"_S\" are the analogs of the similarly "
457 "named macros without the suffix.  These macros perform the same tasks as "
458 "their analogs, but operate on the dynamically allocated CPU set(s) whose "
459 "size is I<setsize> bytes."
460 msgstr ""
461 "名前が \"_S\" で終わるマクロは \"_S\" なしの同じ名前のマクロと同等である。 こ"
462 "れらのマクロは \"_S\" なしのものと同じ動作をするが、 動的に割り当てられた、 "
463 "大きさが I<setsize> バイトの CPU 集合に対して操作を行う点が異なる。"
464
465 #. type: SH
466 #: build/C/man3/CPU_SET.3:213 build/C/man2/clone.2:1193 build/C/man2/kcmp.2:208
467 #: build/C/man2/sched_get_priority_max.2:98 build/C/man3/sched_getcpu.3:58
468 #: build/C/man2/sched_rr_get_interval.2:73 build/C/man2/sched_setaffinity.2:107
469 #: build/C/man2/sched_setattr.2:299 build/C/man2/sched_setparam.2:87
470 #: build/C/man2/sched_setscheduler.2:133 build/C/man2/sched_yield.2:41
471 #: build/C/man2/setns.2:245 build/C/man2/unshare.2:286
472 #, no-wrap
473 msgid "RETURN VALUE"
474 msgstr "返り値"
475
476 #. type: Plain text
477 #: build/C/man3/CPU_SET.3:222
478 msgid ""
479 "B<CPU_ISSET>()  and B<CPU_ISSET_S>()  return nonzero if I<cpu> is in I<set>; "
480 "otherwise, it returns 0."
481 msgstr ""
482 "B<CPU_ISSET>() と B<CPU_ISSET_S>() は、 I<cpu> が I<set> に含まれていれば 0 "
483 "以外を返し、含まれない場合 0 を返す。"
484
485 #. type: Plain text
486 #: build/C/man3/CPU_SET.3:228
487 msgid ""
488 "B<CPU_COUNT>()  and B<CPU_COUNT_S>()  return the number of CPUs in I<set>."
489 msgstr "B<CPU_COUNT>() と B<CPU_COUNT_S>() は I<set> に含まれる CPU 数を返す。"
490
491 #. type: Plain text
492 #: build/C/man3/CPU_SET.3:233
493 msgid ""
494 "B<CPU_EQUAL>()  and B<CPU_EQUAL_S>()  return nonzero if the two CPU sets are "
495 "equal; otherwise they return 0."
496 msgstr ""
497 "B<CPU_EQUAL>() と B<CPU_EQUAL_S>() は、 二つの CPU 集合が等しければ 0 以外を"
498 "返し、 等しくない場合 0 を返す。"
499
500 #. type: Plain text
501 #: build/C/man3/CPU_SET.3:238
502 msgid ""
503 "B<CPU_ALLOC>()  returns a pointer on success, or NULL on failure.  (Errors "
504 "are as for B<malloc>(3).)"
505 msgstr ""
506 "B<CPU_ALLOC>() は成功するとポインターを返し、 失敗すると NULL を返す (エラー"
507 "は B<malloc>(3) と同じである)。"
508
509 #. type: Plain text
510 #: build/C/man3/CPU_SET.3:242
511 msgid ""
512 "B<CPU_ALLOC_SIZE>()  returns the number of bytes required to store a CPU set "
513 "of the specified cardinality."
514 msgstr ""
515 "B<CPU_ALLOC_SIZE>() は指定された大きさの CPU 集合を格納するのに必要なバイト数"
516 "を返す。"
517
518 #. type: Plain text
519 #: build/C/man3/CPU_SET.3:244
520 msgid "The other functions do not return a value."
521 msgstr "他の関数は値を返さない。"
522
523 #. type: SH
524 #: build/C/man3/CPU_SET.3:244 build/C/man2/clone.2:1523 build/C/man2/kcmp.2:298
525 #: build/C/man3/sched_getcpu.3:70 build/C/man2/sched_setaffinity.2:154
526 #: build/C/man2/sched_setattr.2:386 build/C/man2/setns.2:304
527 #: build/C/man2/unshare.2:421
528 #, no-wrap
529 msgid "VERSIONS"
530 msgstr "バージョン"
531
532 #. type: Plain text
533 #: build/C/man3/CPU_SET.3:252
534 msgid ""
535 "The B<CPU_ZERO>(), B<CPU_SET>(), B<CPU_CLR>(), and B<CPU_ISSET>()  macros "
536 "were added in glibc 2.3.3."
537 msgstr ""
538 "マクロ B<CPU_ZERO>(), B<CPU_SET>(), B<CPU_CLR>(), B<CPU_ISSET>() は glibc "
539 "2.3.3 で追加された。"
540
541 #. type: Plain text
542 #: build/C/man3/CPU_SET.3:255
543 msgid "B<CPU_COUNT>()  first appeared in glibc 2.6."
544 msgstr "B<CPU_COUNT>() は glibc 2.6 で初めて登場した。"
545
546 #. type: Plain text
547 #: build/C/man3/CPU_SET.3:273
548 msgid ""
549 "B<CPU_AND>(), B<CPU_OR>(), B<CPU_XOR>(), B<CPU_EQUAL>(), B<CPU_ALLOC>(), "
550 "B<CPU_ALLOC_SIZE>(), B<CPU_FREE>(), B<CPU_ZERO_S>(), B<CPU_SET_S>(), "
551 "B<CPU_CLR_S>(), B<CPU_ISSET_S>(), B<CPU_AND_S>(), B<CPU_OR_S>(), "
552 "B<CPU_XOR_S>(), and B<CPU_EQUAL_S>()  first appeared in glibc 2.7."
553 msgstr ""
554 "B<CPU_AND>(), B<CPU_OR>(), B<CPU_XOR>(), B<CPU_EQUAL>(), B<CPU_ALLOC>(), "
555 "B<CPU_ALLOC_SIZE>(), B<CPU_FREE>(), B<CPU_ZERO_S>(), B<CPU_SET_S>(), "
556 "B<CPU_CLR_S>(), B<CPU_ISSET_S>(), B<CPU_AND_S>(), B<CPU_OR_S>(), "
557 "B<CPU_XOR_S>(), B<CPU_EQUAL_S>() は glibc 2.7 で初めて登場した。"
558
559 #. type: SH
560 #: build/C/man3/CPU_SET.3:273 build/C/man2/clone.2:1533 build/C/man2/kcmp.2:302
561 #: build/C/man2/sched_get_priority_max.2:114 build/C/man3/sched_getcpu.3:84
562 #: build/C/man2/sched_rr_get_interval.2:94 build/C/man2/sched_setaffinity.2:165
563 #: build/C/man2/sched_setattr.2:389 build/C/man2/sched_setparam.2:119
564 #: build/C/man2/sched_setscheduler.2:168 build/C/man2/sched_yield.2:52
565 #: build/C/man2/setns.2:309 build/C/man2/unshare.2:425
566 #, no-wrap
567 msgid "CONFORMING TO"
568 msgstr "準拠"
569
570 #. type: Plain text
571 #: build/C/man3/CPU_SET.3:275
572 msgid "These interfaces are Linux-specific."
573 msgstr "これらのインターフェースは Linux 固有である。"
574
575 #. type: SH
576 #: build/C/man3/CPU_SET.3:275 build/C/man2/clone.2:1537 build/C/man2/kcmp.2:305
577 #: build/C/man3/sched_getcpu.3:87 build/C/man2/sched_rr_get_interval.2:96
578 #: build/C/man2/sched_setaffinity.2:167 build/C/man2/sched_setattr.2:391
579 #: build/C/man2/sched_setscheduler.2:171 build/C/man2/sched_yield.2:54
580 #: build/C/man7/sched.7:951 build/C/man2/setns.2:313 build/C/man2/unshare.2:429
581 #, no-wrap
582 msgid "NOTES"
583 msgstr "注意"
584
585 #. type: Plain text
586 #: build/C/man3/CPU_SET.3:278
587 msgid "To duplicate a CPU set, use B<memcpy>(3)."
588 msgstr "CPU 集合を複製するには、 B<memcpy>(3) を使用する。"
589
590 #. type: Plain text
591 #: build/C/man3/CPU_SET.3:285
592 msgid ""
593 "Since CPU sets are bit masks allocated in units of long words, the actual "
594 "number of CPUs in a dynamically allocated CPU set will be rounded up to the "
595 "next multiple of I<sizeof(unsigned long)>.  An application should consider "
596 "the contents of these extra bits to be undefined."
597 msgstr "CPU 集合はロングワード単位に割り当てられるビットマスクなので、 動的に割り当てられた CPU 集合の実際の CPU 数は I<sizeof(unsigned long)> の次の倍数に切り上げられることになる。 アプリケーションは、 これらの余分なビットの内容は不定と考えるべきである。"
598
599 #. type: Plain text
600 #: build/C/man3/CPU_SET.3:297
601 msgid ""
602 "Notwithstanding the similarity in the names, note that the constant "
603 "B<CPU_SETSIZE> indicates the number of CPUs in the I<cpu_set_t> data type "
604 "(thus, it is effectively a count of the bits in the bit mask), while the "
605 "I<setsize> argument of the B<CPU_*_S>()  macros is a size in bytes."
606 msgstr "名前は似ているが、 定数 B<CPU_SETSIZE> は I<cpu_set_t> データ型に含まれる CPU 数 (つまり、事実上ビットマスク内のビットカウント) を示すのに対して、 マクロ B<CPU_*_S>() の I<setsize> 引き数はバイト単位のサイズである点に注意すること。"
607
608 #. type: Plain text
609 #: build/C/man3/CPU_SET.3:303
610 msgid ""
611 "The data types for arguments and return values shown in the SYNOPSIS are "
612 "hints what about is expected in each case.  However, since these interfaces "
613 "are implemented as macros, the compiler won't necessarily catch all type "
614 "errors if you violate the suggestions."
615 msgstr ""
616 "「書式」に書かれている引き数と返り値のデータ型は、それぞれの場合でどんな型が"
617 "期待されるかのヒントである。 しかしながら、 これらのインターフェースはマクロ"
618 "として実装されているため、 このヒントを守らなかった場合に、 コンパイラが必ず"
619 "しも全ての型エラーを捕捉できるとは限らない。"
620
621 #. type: SH
622 #: build/C/man3/CPU_SET.3:303 build/C/man2/clone.2:1732
623 #: build/C/man2/sched_setattr.2:407 build/C/man2/sched_setscheduler.2:217
624 #, no-wrap
625 msgid "BUGS"
626 msgstr "バグ"
627
628 #.  http://sourceware.org/bugzilla/show_bug.cgi?id=7029
629 #. type: Plain text
630 #: build/C/man3/CPU_SET.3:315
631 msgid ""
632 "On 32-bit platforms with glibc 2.8 and earlier, B<CPU_ALLOC>()  allocates "
633 "twice as much space as is required, and B<CPU_ALLOC_SIZE>()  returns a value "
634 "twice as large as it should.  This bug should not affect the semantics of a "
635 "program, but does result in wasted memory and less efficient operation of "
636 "the macros that operate on dynamically allocated CPU sets.  These bugs are "
637 "fixed in glibc 2.9."
638 msgstr ""
639 "glibc 2.8 以前の 32 ビットプラットフォームでは、 B<CPU_ALLOC>() は必要な空間"
640 "の割り当てを二度行い、 B<CPU_ALLOC_SIZE>() は本来あるべき値の二倍の値を返"
641 "す。 このバグはプログラムの動作には影響を与えないはずだが、 無駄にメモリーを"
642 "消費し、 動的に割り当てられた CPU 集合に対して操作を行うマクロの動作の効率が"
643 "下がる結果となる。 これらのバグは glibc 2.9 で修正された。"
644
645 #. type: SH
646 #: build/C/man3/CPU_SET.3:315 build/C/man2/clone.2:1780 build/C/man2/kcmp.2:322
647 #: build/C/man2/sched_setaffinity.2:306 build/C/man2/setns.2:324
648 #: build/C/man2/unshare.2:463
649 #, no-wrap
650 msgid "EXAMPLES"
651 msgstr "例"
652
653 #. type: Plain text
654 #: build/C/man3/CPU_SET.3:318
655 msgid ""
656 "The following program demonstrates the use of some of the macros used for "
657 "dynamically allocated CPU sets."
658 msgstr ""
659 "以下のプログラムは、動的に割り当てた CPU 集合に対していくつかのマクロを使用す"
660 "る例を示している。"
661
662 #. type: Plain text
663 #: build/C/man3/CPU_SET.3:326
664 #, no-wrap
665 msgid ""
666 "#define _GNU_SOURCE\n"
667 "#include E<lt>sched.hE<gt>\n"
668 "#include E<lt>stdlib.hE<gt>\n"
669 "#include E<lt>unistd.hE<gt>\n"
670 "#include E<lt>stdio.hE<gt>\n"
671 "#include E<lt>assert.hE<gt>\n"
672 msgstr ""
673 "#define _GNU_SOURCE\n"
674 "#include E<lt>sched.hE<gt>\n"
675 "#include E<lt>stdlib.hE<gt>\n"
676 "#include E<lt>unistd.hE<gt>\n"
677 "#include E<lt>stdio.hE<gt>\n"
678 "#include E<lt>assert.hE<gt>\n"
679
680 #. type: Plain text
681 #: build/C/man3/CPU_SET.3:333
682 #, no-wrap
683 msgid ""
684 "int\n"
685 "main(int argc, char *argv[])\n"
686 "{\n"
687 "    cpu_set_t *cpusetp;\n"
688 "    size_t size;\n"
689 "    int num_cpus;\n"
690 msgstr ""
691 "int\n"
692 "main(int argc, char *argv[])\n"
693 "{\n"
694 "    cpu_set_t *cpusetp;\n"
695 "    size_t size;\n"
696 "    int num_cpus;\n"
697
698 #. type: Plain text
699 #: build/C/man3/CPU_SET.3:338
700 #, no-wrap
701 msgid ""
702 "    if (argc E<lt> 2) {\n"
703 "        fprintf(stderr, \"Usage: %s E<lt>num-cpusE<gt>\\en\", argv[0]);\n"
704 "        exit(EXIT_FAILURE);\n"
705 "    }\n"
706 msgstr ""
707 "    if (argc E<lt> 2) {\n"
708 "        fprintf(stderr, \"Usage: %s E<lt>num-cpusE<gt>\\en\", argv[0]);\n"
709 "        exit(EXIT_FAILURE);\n"
710 "    }\n"
711
712 #. type: Plain text
713 #: build/C/man3/CPU_SET.3:340
714 #, no-wrap
715 msgid "    num_cpus = atoi(argv[1]);\n"
716 msgstr "    num_cpus = atoi(argv[1]);\n"
717
718 #. type: Plain text
719 #: build/C/man3/CPU_SET.3:346
720 #, no-wrap
721 msgid ""
722 "    cpusetp = CPU_ALLOC(num_cpus);\n"
723 "    if (cpusetp == NULL) {\n"
724 "        perror(\"CPU_ALLOC\");\n"
725 "        exit(EXIT_FAILURE);\n"
726 "    }\n"
727 msgstr ""
728 "    cpusetp = CPU_ALLOC(num_cpus);\n"
729 "    if (cpusetp == NULL) {\n"
730 "        perror(\"CPU_ALLOC\");\n"
731 "        exit(EXIT_FAILURE);\n"
732 "    }\n"
733
734 #. type: Plain text
735 #: build/C/man3/CPU_SET.3:348
736 #, no-wrap
737 msgid "    size = CPU_ALLOC_SIZE(num_cpus);\n"
738 msgstr "    size = CPU_ALLOC_SIZE(num_cpus);\n"
739
740 #. type: Plain text
741 #: build/C/man3/CPU_SET.3:352
742 #, no-wrap
743 msgid ""
744 "    CPU_ZERO_S(size, cpusetp);\n"
745 "    for (int cpu = 0; cpu E<lt> num_cpus; cpu += 2)\n"
746 "        CPU_SET_S(cpu, size, cpusetp);\n"
747 msgstr ""
748 "    CPU_ZERO_S(size, cpusetp);\n"
749 "    for (int cpu = 0; cpu E<lt> num_cpus; cpu += 2)\n"
750 "        CPU_SET_S(cpu, size, cpusetp);\n"
751
752 #. type: Plain text
753 #: build/C/man3/CPU_SET.3:354
754 #, no-wrap
755 msgid "    printf(\"CPU_COUNT() of set:    %d\\en\", CPU_COUNT_S(size, cpusetp));\n"
756 msgstr "    printf(\"CPU_COUNT() of set:    %d\\en\", CPU_COUNT_S(size, cpusetp));\n"
757
758 #. type: Plain text
759 #: build/C/man3/CPU_SET.3:358
760 #, no-wrap
761 msgid ""
762 "    CPU_FREE(cpusetp);\n"
763 "    exit(EXIT_SUCCESS);\n"
764 "}\n"
765 msgstr ""
766 "    CPU_FREE(cpusetp);\n"
767 "    exit(EXIT_SUCCESS);\n"
768 "}\n"
769
770 #. type: SH
771 #: build/C/man3/CPU_SET.3:359 build/C/man2/clone.2:1903 build/C/man2/kcmp.2:429
772 #: build/C/man2/sched_get_priority_max.2:116 build/C/man3/sched_getcpu.3:107
773 #: build/C/man2/sched_rr_get_interval.2:132
774 #: build/C/man2/sched_setaffinity.2:416 build/C/man2/sched_setattr.2:433
775 #: build/C/man2/sched_setparam.2:121 build/C/man2/sched_setscheduler.2:225
776 #: build/C/man2/sched_yield.2:90 build/C/man7/sched.7:966
777 #: build/C/man2/setns.2:415 build/C/man2/unshare.2:553
778 #, no-wrap
779 msgid "SEE ALSO"
780 msgstr "関連項目"
781
782 #. type: Plain text
783 #: build/C/man3/CPU_SET.3:364
784 msgid ""
785 "B<sched_setaffinity>(2), B<pthread_attr_setaffinity_np>(3), "
786 "B<pthread_setaffinity_np>(3), B<cpuset>(7)"
787 msgstr ""
788 "B<sched_setaffinity>(2), B<pthread_attr_setaffinity_np>(3), "
789 "B<pthread_setaffinity_np>(3), B<cpuset>(7)"
790
791 #. type: SH
792 #: build/C/man3/CPU_SET.3:364 build/C/man2/clone.2:1920 build/C/man2/kcmp.2:432
793 #: build/C/man2/sched_get_priority_max.2:126 build/C/man3/sched_getcpu.3:110
794 #: build/C/man2/sched_rr_get_interval.2:134
795 #: build/C/man2/sched_setaffinity.2:440 build/C/man2/sched_setattr.2:456
796 #: build/C/man2/sched_setparam.2:137 build/C/man2/sched_setscheduler.2:245
797 #: build/C/man2/sched_yield.2:92 build/C/man7/sched.7:1009
798 #: build/C/man2/setns.2:423 build/C/man2/unshare.2:568
799 #, no-wrap
800 msgid "COLOPHON"
801 msgstr "この文書について"
802
803 #. type: Plain text
804 #: build/C/man3/CPU_SET.3:372 build/C/man2/clone.2:1928 build/C/man2/kcmp.2:440
805 #: build/C/man2/sched_get_priority_max.2:134 build/C/man3/sched_getcpu.3:118
806 #: build/C/man2/sched_rr_get_interval.2:142
807 #: build/C/man2/sched_setaffinity.2:448 build/C/man2/sched_setattr.2:464
808 #: build/C/man2/sched_setparam.2:145 build/C/man2/sched_setscheduler.2:253
809 #: build/C/man2/sched_yield.2:100 build/C/man7/sched.7:1017
810 #: build/C/man2/setns.2:431 build/C/man2/unshare.2:576
811 msgid ""
812 "This page is part of release 5.10 of the Linux I<man-pages> project.  A "
813 "description of the project, information about reporting bugs, and the latest "
814 "version of this page, can be found at \\%https://www.kernel.org/doc/man-"
815 "pages/."
816 msgstr "この man ページは Linux I<man-pages> プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は \\%https://www.kernel.org/doc/man-pages/ に書かれている。"
817
818 #. type: TH
819 #: build/C/man2/clone.2:42
820 #, no-wrap
821 msgid "CLONE"
822 msgstr "CLONE"
823
824 #. type: Plain text
825 #: build/C/man2/clone.2:45
826 msgid "clone, __clone2, clone3 - create a child process"
827 msgstr "clone, __clone2, clone3 - 子プロセスを作成する"
828
829 #. type: Plain text
830 #: build/C/man2/clone.2:48
831 #, no-wrap
832 msgid "/* Prototype for the glibc wrapper function */\n"
833 msgstr "/* glibc ラッパー関数のプロトタイプ */\n"
834
835 #. type: Plain text
836 #: build/C/man2/clone.2:51 build/C/man2/unshare.2:27
837 #, no-wrap
838 msgid ""
839 "B<#define _GNU_SOURCE>\n"
840 "B<#include E<lt>sched.hE<gt>>\n"
841 msgstr ""
842 "B<#define _GNU_SOURCE>\n"
843 "B<#include E<lt>sched.hE<gt>>\n"
844
845 #. type: Plain text
846 #: build/C/man2/clone.2:56
847 #, no-wrap
848 msgid ""
849 "B<int clone(int (*>I<fn>B<)(void *), void *>I<stack>B<, int >I<flags>B<, void *>I<arg>B<, ...>\n"
850 "B<          /* pid_t *>I<parent_tid>B<, void *>I<tls>B<, pid_t *>I<child_tid>B< */ );>\n"
851 msgstr ""
852 "B<int clone(int (*>I<fn>B<)(void *), void *>I<stack>B<, int >I<flags>B<, void *>I<arg>B<, ...>\n"
853 "B<          /* pid_t *>I<parent_tid>B<, void *>I<tls>B<, pid_t *>I<child_tid>B< */ );>\n"
854
855 #. type: Plain text
856 #: build/C/man2/clone.2:58
857 #, no-wrap
858 msgid "/* For the prototype of the raw clone() system call, see NOTES */\n"
859 msgstr "/* 生の clone() システムコールのプロトタイプについては「注意」の節を参照 */\n"
860
861 #. type: Plain text
862 #: build/C/man2/clone.2:60
863 #, no-wrap
864 msgid "B<long clone3(struct clone_args *>I<cl_args>B<, size_t >I<size>B<);>\n"
865 msgstr "B<long clone3(struct clone_args *>I<cl_args>B<, size_t >I<size>B<);>\n"
866
867 #. type: Plain text
868 #: build/C/man2/clone.2:66
869 msgid "I<Note>: There is not yet a glibc wrapper for B<clone3>(); see NOTES."
870 msgstr "I<注>: B<clone3>() に対する glibc のラッパー関数は存在しない。「注意」を参照。"
871
872 #. type: Plain text
873 #: build/C/man2/clone.2:70
874 msgid ""
875 "These system calls create a new (\"child\") process, in a manner similar to "
876 "B<fork>(2)."
877 msgstr "これらのシステムコールは、 B<fork>(2) と似た方法で新しい (「子」) プロセスを作成する。"
878
879 #. type: Plain text
880 #: build/C/man2/clone.2:81
881 msgid ""
882 "By contrast with B<fork>(2), these system calls provide more precise control "
883 "over what pieces of execution context are shared between the calling process "
884 "and the child process.  For example, using these system calls, the caller "
885 "can control whether or not the two processes share the virtual address "
886 "space, the table of file descriptors, and the table of signal handlers.  "
887 "These system calls also allow the new child process to be placed in separate "
888 "B<namespaces>(7)."
889 msgstr ""
890
891 #. type: Plain text
892 #: build/C/man2/clone.2:89
893 msgid ""
894 "Note that in this manual page, \"calling process\" normally corresponds to "
895 "\"parent process\".  But see the descriptions of B<CLONE_PARENT> and "
896 "B<CLONE_THREAD> below."
897 msgstr ""
898
899 #. type: Plain text
900 #: build/C/man2/clone.2:91
901 msgid "This page describes the following interfaces:"
902 msgstr "このページでは以下のインターフェースについて説明する。"
903
904 #. type: IP
905 #: build/C/man2/clone.2:91 build/C/man2/clone.2:98 build/C/man2/clone.2:565
906 #: build/C/man2/clone.2:576 build/C/man2/clone.2:584 build/C/man2/clone.2:866
907 #: build/C/man2/clone.2:871 build/C/man2/clone.2:1797 build/C/man2/clone.2:1805
908 #: build/C/man7/sched.7:510 build/C/man7/sched.7:519 build/C/man7/sched.7:542
909 #: build/C/man7/sched.7:550 build/C/man7/sched.7:589 build/C/man7/sched.7:597
910 #: build/C/man7/sched.7:602 build/C/man7/sched.7:607 build/C/man7/sched.7:851
911 #: build/C/man7/sched.7:855 build/C/man7/sched.7:863 build/C/man7/sched.7:867
912 #: build/C/man7/sched.7:870
913 #, no-wrap
914 msgid "*"
915 msgstr "*"
916
917 #. type: Plain text
918 #: build/C/man2/clone.2:98
919 msgid ""
920 "The glibc B<clone>()  wrapper function and the underlying system call on "
921 "which it is based.  The main text describes the wrapper function; the "
922 "differences for the raw system call are described toward the end of this "
923 "page."
924 msgstr "glibc の B<clone>() ラッパー関数とその裏で呼ばれるシステムコール。メインの説明はラッパー関数に関するものである。素のシステムコールにおける差分はこのページの最後の方で説明する。"
925
926 #. type: Plain text
927 #: build/C/man2/clone.2:102
928 msgid "The newer B<clone3>()  system call."
929 msgstr "新しい B<clone3>() システムコール。"
930
931 #. type: Plain text
932 #: build/C/man2/clone.2:106
933 msgid ""
934 "In the remainder of this page, the terminology \"the clone call\" is used "
935 "when noting details that apply to all of these interfaces,"
936 msgstr ""
937
938 #. type: SS
939 #: build/C/man2/clone.2:106
940 #, no-wrap
941 msgid "The clone() wrapper function"
942 msgstr "clone() ラッパー関数"
943
944 #. type: Plain text
945 #: build/C/man2/clone.2:122
946 msgid ""
947 "When the child process is created with the B<clone>()  wrapper function, it "
948 "commences execution by calling the function pointed to by the argument "
949 "I<fn>.  (This differs from B<fork>(2), where execution continues in the "
950 "child from the point of the B<fork>(2)  call.)  The I<arg> argument is "
951 "passed as the argument of the function I<fn>."
952 msgstr "B<clone>() ラッパー関数で子プロセスが作成された時に、引き数 I<fn> が指す関数を呼び出して実行を開始する (この点が B<fork>(2) とは異なり、 B<fork>(2) の場合、子プロセスは B<fork>(2) が呼び出された場所から実行を続ける)。 I<arg> 引き数は、関数 I<fn> の引き数として渡される。"
953
954 #. type: Plain text
955 #: build/C/man2/clone.2:132
956 msgid ""
957 "When the I<fn>(I<arg>)  function returns, the child process terminates.  The "
958 "integer returned by I<fn> is the exit status for the child process.  The "
959 "child process may also terminate explicitly by calling B<exit>(2)  or after "
960 "receiving a fatal signal."
961 msgstr "I<fn>(I<arg>) 関数が終了すると、子プロセスは終了する。 I<fn> によって返された整数が子プロセスの終了ステータスとなる。 子プロセスは、 B<exit>(2)  を呼んで明示的に終了することもあるし、致命的なシグナルを受信した 場合に終了することもある。"
962
963 #. type: Plain text
964 #: build/C/man2/clone.2:152
965 msgid ""
966 "The I<stack> argument specifies the location of the stack used by the child "
967 "process.  Since the child and calling process may share memory, it is not "
968 "possible for the child process to execute in the same stack as the calling "
969 "process.  The calling process must therefore set up memory space for the "
970 "child stack and pass a pointer to this space to B<clone>().  Stacks grow "
971 "downward on all processors that run Linux (except the HP PA processors), so "
972 "I<stack> usually points to the topmost address of the memory space set up "
973 "for the child stack.  Note that B<clone>()  does not provide a means whereby "
974 "the caller can inform the kernel of the size of the stack area."
975 msgstr "I<stack> 引き数は、子プロセスによって使用されるスタックの位置を指定する。 子プロセスと呼び出し元のプロセスはメモリーを共有することがあるため、 子プロセスは呼び出し元のプロセスと同じスタックで実行することができない。 このため、呼び出し元のプロセスは子プロセスのスタックのためのメモリー空間を 用意して、この空間へのポインターを B<clone>() へ渡さなければならない。 (HP PA プロセッサ以外の) Linux が動作する全てのプロセッサでは、 スタックは下方 (アドレスが小さい方向) へと伸びる。このため、普通は I<stack> は子プロセスのスタックのために用意したメモリー空間の一番大きい アドレスを指すようにする。 B<clone>() は呼び出し元がカーネルにスタック領域のサイズをカーネルに知らせる方法を提供していない点に注意すること。"
976
977 #. type: Plain text
978 #: build/C/man2/clone.2:157
979 msgid "The remaining arguments to B<clone>()  are discussed below."
980 msgstr ""
981
982 #. type: tbl table
983 #: build/C/man2/clone.2:157 build/C/man2/clone.2:258
984 #, no-wrap
985 msgid "clone3()"
986 msgstr "clone3()"
987
988 #. type: Plain text
989 #: build/C/man2/clone.2:167
990 msgid ""
991 "The B<clone3>()  system call provides a superset of the functionality of the "
992 "older B<clone>()  interface.  It also provides a number of API improvements, "
993 "including: space for additional flags bits; cleaner separation in the use of "
994 "various arguments; and the ability to specify the size of the child's stack "
995 "area."
996 msgstr ""
997
998 #. type: Plain text
999 #: build/C/man2/clone.2:174
1000 msgid ""
1001 "As with B<fork>(2), B<clone3>()  returns in both the parent and the child.  "
1002 "It returns 0 in the child process and returns the PID of the child in the "
1003 "parent."
1004 msgstr ""
1005
1006 #. type: Plain text
1007 #: build/C/man2/clone.2:180
1008 msgid ""
1009 "The I<cl_args> argument of B<clone3>()  is a structure of the following form:"
1010 msgstr "B<clone3>() の I<cl_args> 引き数は、以下の形式の構造体である。"
1011
1012 #. type: Plain text
1013 #: build/C/man2/clone.2:203
1014 #, no-wrap
1015 msgid ""
1016 "struct clone_args {\n"
1017 "    u64 flags;        /* Flags bit mask */\n"
1018 "    u64 pidfd;        /* Where to store PID file descriptor\n"
1019 "                         (I<pid_t *>) */\n"
1020 "    u64 child_tid;    /* Where to store child TID,\n"
1021 "                         in child\\(aqs memory (I<pid_t *>) */\n"
1022 "    u64 parent_tid;   /* Where to store child TID,\n"
1023 "                         in parent\\(aqs memory (I<int *>) */\n"
1024 "    u64 exit_signal;  /* Signal to deliver to parent on\n"
1025 "                         child termination */\n"
1026 "    u64 stack;        /* Pointer to lowest byte of stack */\n"
1027 "    u64 stack_size;   /* Size of stack */\n"
1028 "    u64 tls;          /* Location of new TLS */\n"
1029 "    u64 set_tid;      /* Pointer to a I<pid_t> array\n"
1030 "                         (since Linux 5.5) */\n"
1031 "    u64 set_tid_size; /* Number of elements in I<set_tid>\n"
1032 "                         (since Linux 5.5) */\n"
1033 "    u64 cgroup;       /* File descriptor for target cgroup\n"
1034 "                         of child (since Linux 5.7) */\n"
1035 "};\n"
1036 msgstr ""
1037
1038 #. type: Plain text
1039 #: build/C/man2/clone.2:216
1040 msgid ""
1041 "The I<size> argument that is supplied to B<clone3>()  should be initialized "
1042 "to the size of this structure.  (The existence of the I<size> argument "
1043 "permits future extensions to the I<clone_args> structure.)"
1044 msgstr ""
1045
1046 #. type: Plain text
1047 #: build/C/man2/clone.2:230
1048 msgid ""
1049 "The stack for the child process is specified via I<cl_args.stack>, which "
1050 "points to the lowest byte of the stack area, and I<cl_args.stack_size>, "
1051 "which specifies the size of the stack in bytes.  In the case where the "
1052 "B<CLONE_VM> flag (see below) is specified, a stack must be explicitly "
1053 "allocated and specified.  Otherwise, these two fields can be specified as "
1054 "NULL and 0, which causes the child to use the same stack area as the parent "
1055 "(in the child's own virtual address space)."
1056 msgstr ""
1057
1058 #. type: Plain text
1059 #: build/C/man2/clone.2:235
1060 msgid "The remaining fields in the I<cl_args> argument are discussed below."
1061 msgstr ""
1062
1063 #. type: SS
1064 #: build/C/man2/clone.2:235
1065 #, no-wrap
1066 msgid "Equivalence between clone() and clone3() arguments"
1067 msgstr ""
1068
1069 #. type: Plain text
1070 #: build/C/man2/clone.2:246
1071 msgid ""
1072 "Unlike the older B<clone>()  interface, where arguments are passed "
1073 "individually, in the newer B<clone3>()  interface the arguments are packaged "
1074 "into the I<clone_args> structure shown above.  This structure allows for a "
1075 "superset of the information passed via the B<clone>()  arguments."
1076 msgstr ""
1077
1078 #. type: Plain text
1079 #: build/C/man2/clone.2:253
1080 msgid ""
1081 "The following table shows the equivalence between the arguments of "
1082 "B<clone>()  and the fields in the I<clone_args> argument supplied to "
1083 "B<clone3>():"
1084 msgstr ""
1085
1086 #. type: tbl table
1087 #: build/C/man2/clone.2:258
1088 #, no-wrap
1089 msgid "clone()"
1090 msgstr "clone()"
1091
1092 #. type: tbl table
1093 #: build/C/man2/clone.2:258 build/C/man2/clone.2:332
1094 #, no-wrap
1095 msgid "Notes"
1096 msgstr "備考"
1097
1098 #. type: tbl table
1099 #: build/C/man2/clone.2:259
1100 #, no-wrap
1101 msgid "I<cl_args> field"
1102 msgstr "I<cl_args> フィールド"
1103
1104 #. type: tbl table
1105 #: build/C/man2/clone.2:260
1106 #, no-wrap
1107 msgid "flags & \\(ti0xff"
1108 msgstr "flags & \\(ti0xff"
1109
1110 #. type: tbl table
1111 #: build/C/man2/clone.2:260
1112 #, no-wrap
1113 msgid "flags"
1114 msgstr "flags"
1115
1116 #. type: tbl table
1117 #: build/C/man2/clone.2:260
1118 #, no-wrap
1119 msgid "For most flags; details below"
1120 msgstr ""
1121
1122 #. type: tbl table
1123 #: build/C/man2/clone.2:261 build/C/man2/clone.2:263
1124 #, no-wrap
1125 msgid "parent_tid"
1126 msgstr "parent_tid"
1127
1128 #. type: tbl table
1129 #: build/C/man2/clone.2:261
1130 #, no-wrap
1131 msgid "pidfd"
1132 msgstr "pidfd"
1133
1134 #. type: tbl table
1135 #: build/C/man2/clone.2:261
1136 #, no-wrap
1137 msgid "See CLONE_PIDFD"
1138 msgstr "CLONE_PIDFD 参照"
1139
1140 #. type: tbl table
1141 #: build/C/man2/clone.2:262
1142 #, no-wrap
1143 msgid "child_tid"
1144 msgstr "child_tid"
1145
1146 #. type: tbl table
1147 #: build/C/man2/clone.2:262
1148 #, no-wrap
1149 msgid "See CLONE_CHILD_SETTID"
1150 msgstr "CLONE_CHILD_SETTID 参照"
1151
1152 #. type: tbl table
1153 #: build/C/man2/clone.2:263
1154 #, no-wrap
1155 msgid "See CLONE_PARENT_SETTID"
1156 msgstr "CLONE_PARENT_SETTID 参照"
1157
1158 #. type: tbl table
1159 #: build/C/man2/clone.2:264
1160 #, no-wrap
1161 msgid "flags & 0xff"
1162 msgstr "flags & 0xff"
1163
1164 #. type: tbl table
1165 #: build/C/man2/clone.2:264
1166 #, no-wrap
1167 msgid "exit_signal"
1168 msgstr "exit_signal"
1169
1170 #. type: tbl table
1171 #: build/C/man2/clone.2:265
1172 #, no-wrap
1173 msgid "stack"
1174 msgstr "stack"
1175
1176 #. type: tbl table
1177 #: build/C/man2/clone.2:266 build/C/man2/clone.2:268 build/C/man2/clone.2:269
1178 #: build/C/man2/clone.2:270
1179 #, no-wrap
1180 msgid "I<--->"
1181 msgstr "I<--->"
1182
1183 #. type: tbl table
1184 #: build/C/man2/clone.2:266
1185 #, no-wrap
1186 msgid "stack_size"
1187 msgstr "stack_size"
1188
1189 #. type: tbl table
1190 #: build/C/man2/clone.2:267
1191 #, no-wrap
1192 msgid "tls"
1193 msgstr "tls"
1194
1195 #. type: tbl table
1196 #: build/C/man2/clone.2:267
1197 #, no-wrap
1198 msgid "See CLONE_SETTLS"
1199 msgstr "CLONE_SETTLS 参照"
1200
1201 #. type: tbl table
1202 #: build/C/man2/clone.2:268
1203 #, no-wrap
1204 msgid "set_tid"
1205 msgstr "set_tid"
1206
1207 #. type: tbl table
1208 #: build/C/man2/clone.2:268
1209 #, no-wrap
1210 msgid "See below for details"
1211 msgstr "詳細は下記を参照"
1212
1213 #. type: tbl table
1214 #: build/C/man2/clone.2:269
1215 #, no-wrap
1216 msgid "set_tid_size"
1217 msgstr "set_tid_size"
1218
1219 #. type: tbl table
1220 #: build/C/man2/clone.2:270
1221 #, no-wrap
1222 msgid "cgroup"
1223 msgstr "cgroup"
1224
1225 #. type: tbl table
1226 #: build/C/man2/clone.2:270
1227 #, no-wrap
1228 msgid "See CLONE_INTO_CGROUP"
1229 msgstr "CLONE_INTO_CGROUP 参照"
1230
1231 #. type: SS
1232 #: build/C/man2/clone.2:274
1233 #, no-wrap
1234 msgid "The child termination signal"
1235 msgstr ""
1236
1237 #. type: Plain text
1238 #: build/C/man2/clone.2:293
1239 msgid ""
1240 "When the child process terminates, a signal may be sent to the parent.  The "
1241 "termination signal is specified in the low byte of I<flags> (B<clone>())  or "
1242 "in I<cl_args.exit_signal> (B<clone3>()).  If this signal is specified as "
1243 "anything other than B<SIGCHLD>, then the parent process must specify the "
1244 "B<__WALL> or B<__WCLONE> options when waiting for the child with "
1245 "B<wait>(2).  If no signal (i.e., zero) is specified, then the parent process "
1246 "is not signaled when the child terminates."
1247 msgstr ""
1248 "子プロセスが終了した場合、シグナルが親プロセスに送信される。終了シグナル (termination signal) は (B<clone>() の) I<flags> の下位 1 バイトまたは (B<clone3>() の) I<cl_args.exit_signal> で指定される。\n"
1249 "このシグナルとして B<SIGCHLD> 以外が指定された場合、親プロセスは、 B<wait>(2) で子プロセスを待つ際に、オプションとして B<__WALL> または B<__WCLONE> を指定しなければならない。どのシグナルも指定されなかった場合 (つまり 0 が指定された場合)、子プロセスが終了した時に親プロセスにシグナルは送られない。"
1250
1251 #. type: SS
1252 #: build/C/man2/clone.2:293
1253 #, no-wrap
1254 msgid "The set_tid array"
1255 msgstr ""
1256
1257 #. type: Plain text
1258 #: build/C/man2/clone.2:313
1259 msgid ""
1260 "By default, the kernel chooses the next sequential PID for the new process "
1261 "in each of the PID namespaces where it is present.  When creating a process "
1262 "with B<clone3>(), the I<set_tid> array (available since Linux 5.5)  can be "
1263 "used to select specific PIDs for the process in some or all of the PID "
1264 "namespaces where it is present.  If the PID of the newly created process "
1265 "should be set only for the current PID namespace or in the newly created PID "
1266 "namespace (if I<flags> contains B<CLONE_NEWPID>)  then the first element in "
1267 "the I<set_tid> array has to be the desired PID and I<set_tid_size> needs to "
1268 "be 1."
1269 msgstr ""
1270
1271 #. type: Plain text
1272 #: build/C/man2/clone.2:326
1273 msgid ""
1274 "If the PID of the newly created process should have a certain value in "
1275 "multiple PID namespaces, then the I<set_tid> array can have multiple "
1276 "entries.  The first entry defines the PID in the most deeply nested PID "
1277 "namespace and each of the following entries contains the PID in the "
1278 "corresponding ancestor PID namespace.  The number of PID namespaces in which "
1279 "a PID should be set is defined by I<set_tid_size> which cannot be larger "
1280 "than the number of currently nested PID namespaces."
1281 msgstr ""
1282
1283 #. type: Plain text
1284 #: build/C/man2/clone.2:328
1285 msgid ""
1286 "To create a process with the following PIDs in a PID namespace hierarchy:"
1287 msgstr ""
1288
1289 #. type: tbl table
1290 #: build/C/man2/clone.2:332
1291 #, no-wrap
1292 msgid "PID NS level"
1293 msgstr ""
1294
1295 #. type: tbl table
1296 #: build/C/man2/clone.2:332
1297 #, no-wrap
1298 msgid "Requested PID"
1299 msgstr ""
1300
1301 #. type: IP
1302 #: build/C/man2/clone.2:333 build/C/man2/kcmp.2:223
1303 #, no-wrap
1304 msgid "0"
1305 msgstr "0"
1306
1307 #. type: tbl table
1308 #: build/C/man2/clone.2:333
1309 #, no-wrap
1310 msgid "31496"
1311 msgstr "31496"
1312
1313 #. type: tbl table
1314 #: build/C/man2/clone.2:333
1315 #, no-wrap
1316 msgid "Outermost PID namespace"
1317 msgstr ""
1318
1319 #. type: IP
1320 #: build/C/man2/clone.2:334 build/C/man2/kcmp.2:228
1321 #, no-wrap
1322 msgid "1"
1323 msgstr "1"
1324
1325 #. type: tbl table
1326 #: build/C/man2/clone.2:334
1327 #, no-wrap
1328 msgid "42"
1329 msgstr "42"
1330
1331 #. type: IP
1332 #: build/C/man2/clone.2:335 build/C/man2/kcmp.2:232
1333 #, no-wrap
1334 msgid "2"
1335 msgstr "2"
1336
1337 #. type: tbl table
1338 #: build/C/man2/clone.2:335
1339 #, no-wrap
1340 msgid "7"
1341 msgstr "7"
1342
1343 #. type: tbl table
1344 #: build/C/man2/clone.2:335
1345 #, no-wrap
1346 msgid "Innermost PID namespace"
1347 msgstr ""
1348
1349 #. type: Plain text
1350 #: build/C/man2/clone.2:340
1351 msgid "Set the array to:"
1352 msgstr ""
1353
1354 #. type: Plain text
1355 #: build/C/man2/clone.2:347
1356 #, no-wrap
1357 msgid ""
1358 "set_tid[0] = 7;\n"
1359 "set_tid[1] = 42;\n"
1360 "set_tid[2] = 31496;\n"
1361 "set_tid_size = 3;\n"
1362 msgstr ""
1363 "set_tid[0] = 7;\n"
1364 "set_tid[1] = 42;\n"
1365 "set_tid[2] = 31496;\n"
1366 "set_tid_size = 3;\n"
1367
1368 #. type: Plain text
1369 #: build/C/man2/clone.2:352
1370 msgid ""
1371 "If only the PIDs in the two innermost PID namespaces need to be specified, "
1372 "set the array to:"
1373 msgstr ""
1374
1375 #. type: Plain text
1376 #: build/C/man2/clone.2:358
1377 #, no-wrap
1378 msgid ""
1379 "set_tid[0] = 7;\n"
1380 "set_tid[1] = 42;\n"
1381 "set_tid_size = 2;\n"
1382 msgstr ""
1383 "set_tid[0] = 7;\n"
1384 "set_tid[1] = 42;\n"
1385 "set_tid_size = 2;\n"
1386
1387 #. type: Plain text
1388 #: build/C/man2/clone.2:363
1389 msgid ""
1390 "The PID in the PID namespaces outside the two innermost PID namespaces will "
1391 "be selected the same way as any other PID is selected."
1392 msgstr ""
1393
1394 #.  commit 124ea650d3072b005457faed69909221c2905a1f
1395 #.  commit 1caef81da05a84a40dbf02110e967ce6d1135ff6
1396 #. type: Plain text
1397 #: build/C/man2/clone.2:374
1398 msgid ""
1399 "The I<set_tid> feature requires B<CAP_SYS_ADMIN> or (since Linux 5.9)  "
1400 "B<CAP_CHECKPOINT_RESTORE> in all owning user namespaces of the target PID "
1401 "namespaces."
1402 msgstr ""
1403
1404 #. type: Plain text
1405 #: build/C/man2/clone.2:382
1406 msgid ""
1407 "Callers may only choose a PID greater than 1 in a given PID namespace if an "
1408 "B<init> process (i.e., a process with PID 1) already exists in that "
1409 "namespace.  Otherwise the PID entry for this PID namespace must be 1."
1410 msgstr ""
1411
1412 #. type: SS
1413 #: build/C/man2/clone.2:382
1414 #, no-wrap
1415 msgid "The flags mask"
1416 msgstr ""
1417
1418 #. type: Plain text
1419 #: build/C/man2/clone.2:401
1420 msgid ""
1421 "Both B<clone>()  and B<clone3>()  allow a flags bit mask that modifies their "
1422 "behavior and allows the caller to specify what is shared between the calling "
1423 "process and the child process.  This bit mask\\(emthe I<flags> argument of "
1424 "B<clone>()  or the I<cl_args.flags> field passed to B<clone3>()\\(emis "
1425 "referred to as the I<flags> mask in the remainder of this page."
1426 msgstr ""
1427
1428 #. type: Plain text
1429 #: build/C/man2/clone.2:411
1430 msgid ""
1431 "The I<flags> mask is specified as a bitwise-OR of zero or more of the "
1432 "constants listed below.  Except as noted below, these flags are available "
1433 "(and have the same effect) in both B<clone>()  and B<clone3>()."
1434 msgstr ""
1435
1436 #. type: TP
1437 #: build/C/man2/clone.2:411
1438 #, no-wrap
1439 msgid "B<CLONE_CHILD_CLEARTID> (since Linux 2.5.49)"
1440 msgstr "B<CLONE_CHILD_CLEARTID> (Linux 2.5.49 以降)"
1441
1442 #. type: Plain text
1443 #: build/C/man2/clone.2:425
1444 msgid ""
1445 "Clear (zero) the child thread ID at the location pointed to by I<child_tid> "
1446 "(B<clone>())  or I<cl_args.child_tid> (B<clone3>())  in child memory when "
1447 "the child exits, and do a wakeup on the futex at that address.  The address "
1448 "involved may be changed by the B<set_tid_address>(2)  system call.  This is "
1449 "used by threading libraries."
1450 msgstr "子プロセスが終了したときに、子プロセスのメモリー内の (B<clone>() の) I<child_tid> や (B<clone3>() の) I<cl_args.child_tid> が指す場所にある子プロセスのスレッド ID をクリアし (ゼロに設定し)、そのアドレスで futex を wake (起床) させる。 このアドレスは B<set_tid_address>(2) システムコールで変更することができる。 この機能はスレッドライブラリで使用される。"
1451
1452 #. type: TP
1453 #: build/C/man2/clone.2:425
1454 #, no-wrap
1455 msgid "B<CLONE_CHILD_SETTID> (since Linux 2.5.49)"
1456 msgstr "B<CLONE_CHILD_SETTID> (Linux 2.5.49 以降)"
1457
1458 #. type: Plain text
1459 #: build/C/man2/clone.2:440
1460 msgid ""
1461 "Store the child thread ID at the location pointed to by I<child_tid> "
1462 "(B<clone>())  or I<cl_args.child_tid> (B<clone3>())  in the child's memory.  "
1463 "The store operation completes before the clone call returns control to user "
1464 "space in the child process.  (Note that the store operation may not have "
1465 "completed before the clone call returns in the parent process, which will be "
1466 "relevant if the B<CLONE_VM> flag is also employed.)"
1467 msgstr ""
1468
1469 #. type: TP
1470 #: build/C/man2/clone.2:440
1471 #, no-wrap
1472 msgid "B<CLONE_CLEAR_SIGHAND> (since Linux 5.5)"
1473 msgstr "B<CLONE_CLEAR_SIGHAND> (Linux 5.5 以降)"
1474
1475 #.  commit b612e5df4587c934bd056bf05f4a1deca4de4f75
1476 #. type: Plain text
1477 #: build/C/man2/clone.2:450
1478 msgid ""
1479 "By default, signal dispositions in the child thread are the same as in the "
1480 "parent.  If this flag is specified, then all signals that are handled in the "
1481 "parent are reset to their default dispositions (B<SIG_DFL>)  in the child."
1482 msgstr ""
1483
1484 #. type: Plain text
1485 #: build/C/man2/clone.2:454
1486 msgid ""
1487 "Specifying this flag together with B<CLONE_SIGHAND> is nonsensical and "
1488 "disallowed."
1489 msgstr ""
1490
1491 #. type: TP
1492 #: build/C/man2/clone.2:454
1493 #, no-wrap
1494 msgid "B<CLONE_DETACHED> (historical)"
1495 msgstr ""
1496
1497 #.  added in 2.5.32; removed in 2.6.0-test4
1498 #. type: Plain text
1499 #: build/C/man2/clone.2:468
1500 msgid ""
1501 "For a while (during the Linux 2.5 development series)  there was a "
1502 "B<CLONE_DETACHED> flag, which caused the parent not to receive a signal when "
1503 "the child terminated.  Ultimately, the effect of this flag was subsumed "
1504 "under the B<CLONE_THREAD> flag and by the time Linux 2.6.0 was released, "
1505 "this flag had no effect.  Starting in Linux 2.6.2, the need to give this "
1506 "flag together with B<CLONE_THREAD> disappeared."
1507 msgstr ""
1508
1509 #. type: Plain text
1510 #: build/C/man2/clone.2:474
1511 msgid ""
1512 "This flag is still defined, but it is usually ignored when calling "
1513 "B<clone>().  However, see the description of B<CLONE_PIDFD> for some "
1514 "exceptions."
1515 msgstr ""
1516
1517 #. type: TP
1518 #: build/C/man2/clone.2:474
1519 #, no-wrap
1520 msgid "B<CLONE_FILES> (since Linux 2.0)"
1521 msgstr "B<CLONE_FILES> (Linux 2.0 以降)"
1522
1523 #. type: Plain text
1524 #: build/C/man2/clone.2:490
1525 msgid ""
1526 "If B<CLONE_FILES> is set, the calling process and the child process share "
1527 "the same file descriptor table.  Any file descriptor created by the calling "
1528 "process or by the child process is also valid in the other process.  "
1529 "Similarly, if one of the processes closes a file descriptor, or changes its "
1530 "associated flags (using the B<fcntl>(2)  B<F_SETFD> operation), the other "
1531 "process is also affected.  If a process sharing a file descriptor table "
1532 "calls B<execve>(2), its file descriptor table is duplicated (unshared)."
1533 msgstr "B<CLONE_FILES> が設定された場合、呼び出し元のプロセスと子プロセスはファイルディスクリプターの テーブルを共有する。 呼び出し元プロセスとその子プロセスの一方が作成した ファイルディスクリプターは、もう一方においても有効である。 同じように、一方のプロセスがファイルディスクリプターを閉じたり、 (B<fcntl>(2)  B<F_SETFD> 操作を使って) ディスクリプターに関連するフラグを変更したりすると、 もう一方のプロセスにも影響する。ファイルディスクリプターテーブルを共有するプロセスが B<execve>(2) を呼び出した場合、そのファイルディスクリプターテーブルは複製される (共有はされない)。"
1534
1535 #. type: Plain text
1536 #: build/C/man2/clone.2:505
1537 #, fuzzy
1538 #| msgid ""
1539 #| "If B<CLONE_FILES> is not set, the child process inherits a copy of all "
1540 #| "file descriptors opened in the calling process at the time of "
1541 #| "B<clone>().  (The duplicated file descriptors in the child refer to the "
1542 #| "same open file descriptions (see B<open>(2))  as the corresponding file "
1543 #| "descriptors in the calling process.)  Subsequent operations that open or "
1544 #| "close file descriptors, or change file descriptor flags, performed by "
1545 #| "either the calling process or the child process do not affect the other "
1546 #| "process."
1547 msgid ""
1548 "If B<CLONE_FILES> is not set, the child process inherits a copy of all file "
1549 "descriptors opened in the calling process at the time of the clone call.  "
1550 "Subsequent operations that open or close file descriptors, or change file "
1551 "descriptor flags, performed by either the calling process or the child "
1552 "process do not affect the other process.  Note, however, that the duplicated "
1553 "file descriptors in the child refer to the same open file descriptions as "
1554 "the corresponding file descriptors in the calling process, and thus share "
1555 "file offsets and file status flags (see B<open>(2))."
1556 msgstr ""
1557 "B<CLONE_FILES> が設定されていない場合、子プロセスは、 B<clone>()  が実行され"
1558 "た時点で、呼び出し元のプロセスがオープンしている全ての ファイルディスクリプ"
1559 "ターのコピーを継承する (子プロセスの複製されたファイルディスクリプターは、 対"
1560 "応する呼び出し元のプロセスのファイルディスクリプターと 同じファイル記述 "
1561 "(B<open>(2)  参照) を参照する)。 これ以降に、呼び出し元のプロセスと子プロセス"
1562 "の一方が ファイルディスクリプターの操作 (ファイルディスクリプターの オープ"
1563 "ン・クローズや、ファイルディスクリプターフラグの変更)  を行っても、もう一方の"
1564 "プロセスには影響を与えない。"
1565
1566 #. type: TP
1567 #: build/C/man2/clone.2:505
1568 #, no-wrap
1569 msgid "B<CLONE_FS> (since Linux 2.0)"
1570 msgstr "B<CLONE_FS> (Linux 2.0 以降)"
1571
1572 #. type: Plain text
1573 #: build/C/man2/clone.2:520
1574 msgid ""
1575 "If B<CLONE_FS> is set, the caller and the child process share the same "
1576 "filesystem information.  This includes the root of the filesystem, the "
1577 "current working directory, and the umask.  Any call to B<chroot>(2), "
1578 "B<chdir>(2), or B<umask>(2)  performed by the calling process or the child "
1579 "process also affects the other process."
1580 msgstr ""
1581 "B<CLONE_FS> が設定された場合、呼び出し元のプロセスと子プロセスが同じファイル"
1582 "システム 情報を共有する。ファイルシステム情報は、ファイルシステムのルート "
1583 "(root)、 カレントワーキングディレクトリ (current working directory)  や "
1584 "umask などである。 呼び出し元のプロセスや子プロセスのどちらか一方によって "
1585 "B<chroot>(2), B<chdir>(2), B<umask>(2)  が呼び出されると、もう一方のプロセス"
1586 "にも影響が及ぶ。"
1587
1588 #. type: Plain text
1589 #: build/C/man2/clone.2:531
1590 msgid ""
1591 "If B<CLONE_FS> is not set, the child process works on a copy of the "
1592 "filesystem information of the calling process at the time of the clone "
1593 "call.  Calls to B<chroot>(2), B<chdir>(2), or B<umask>(2)  performed later "
1594 "by one of the processes do not affect the other process."
1595 msgstr ""
1596 "B<CLONE_FS> が設定されていない場合、子プロセスは、 B<clone>()  が実行された時"
1597 "点での、呼び出し元のプロセスのファイルシステム情報のコピーを 使用する。 これ"
1598 "以降は、呼び出し元のプロセスと子プロセスの一方が B<chroot>(2), B<chdir>(2), "
1599 "B<umask>(2)  を呼び出しても、もう一方のプロセスには影響を与えない。"
1600
1601 #. type: TP
1602 #: build/C/man2/clone.2:531
1603 #, no-wrap
1604 msgid "B<CLONE_INTO_CGROUP> (since Linux 5.7)"
1605 msgstr "B<CLONE_INTO_CGROUP> (Linux 5.7 以降)"
1606
1607 #.  commit ef2c41cf38a7559bbf91af42d5b6a4429db8fc68
1608 #. type: Plain text
1609 #: build/C/man2/clone.2:542
1610 msgid ""
1611 "By default, a child process is placed in the same version 2 cgroup as its "
1612 "parent.  The B<CLONE_INTO_CGROUP> flag allows the child process to be "
1613 "created in a different version 2 cgroup.  (Note that B<CLONE_INTO_CGROUP> "
1614 "has effect only for version 2 cgroups.)"
1615 msgstr ""
1616
1617 #. type: Plain text
1618 #: build/C/man2/clone.2:560
1619 msgid ""
1620 "In order to place the child process in a different cgroup, the caller "
1621 "specifies B<CLONE_INTO_CGROUP> in I<cl_args.flags> and passes a file "
1622 "descriptor that refers to a version 2 cgroup in the I<cl_args.cgroup> "
1623 "field.  (This file descriptor can be obtained by opening a cgroup v2 "
1624 "directory using either the B<O_RDONLY> or the B<O_PATH> flag.)  Note that "
1625 "all of the usual restrictions (described in B<cgroups>(7))  on placing a "
1626 "process into a version 2 cgroup apply."
1627 msgstr ""
1628
1629 #. type: Plain text
1630 #: build/C/man2/clone.2:564
1631 msgid ""
1632 "Among the possible use cases for B<CLONE_INTO_CGROUP> are the following:"
1633 msgstr ""
1634
1635 #. type: Plain text
1636 #: build/C/man2/clone.2:576
1637 msgid ""
1638 "Spawning a process into a cgroup different from the parent's cgroup makes it "
1639 "possible for a service manager to directly spawn new services into dedicated "
1640 "cgroups.  This eliminates the accounting jitter that would be caused if the "
1641 "child process was first created in the same cgroup as the parent and then "
1642 "moved into the target cgroup.  Furthermore, spawning the child process "
1643 "directly into a target cgroup is significantly cheaper than moving the child "
1644 "process into the target cgroup after it has been created."
1645 msgstr ""
1646
1647 #. type: Plain text
1648 #: build/C/man2/clone.2:584
1649 msgid ""
1650 "The B<CLONE_INTO_CGROUP> flag also allows the creation of frozen child "
1651 "processes by spawning them into a frozen cgroup.  (See B<cgroups>(7)  for a "
1652 "description of the freezer controller.)"
1653 msgstr ""
1654
1655 #. type: Plain text
1656 #: build/C/man2/clone.2:589
1657 msgid ""
1658 "For threaded applications (or even thread implementations which make use of "
1659 "cgroups to limit individual threads), it is possible to establish a fixed "
1660 "cgroup layout before spawning each thread directly into its target cgroup."
1661 msgstr ""
1662
1663 #. type: TP
1664 #: build/C/man2/clone.2:590
1665 #, no-wrap
1666 msgid "B<CLONE_IO> (since Linux 2.6.25)"
1667 msgstr "B<CLONE_IO> (Linux 2.6.25 以降)"
1668
1669 #. type: Plain text
1670 #: build/C/man2/clone.2:599
1671 msgid ""
1672 "If B<CLONE_IO> is set, then the new process shares an I/O context with the "
1673 "calling process.  If this flag is not set, then (as with B<fork>(2))  the "
1674 "new process has its own I/O context."
1675 msgstr ""
1676 "B<CLONE_IO> が設定された場合、新しいプロセスは呼び出し元のプロセスと I/O コン"
1677 "テキストを共有する。 このフラグが設定されていない場合には、 (B<fork>(2)  の場"
1678 "合と同様) 新しいプロセスは自分専用の I/O コンテキストを持つ。"
1679
1680 #.  The following based on text from Jens Axboe
1681 #.  the anticipatory and CFQ scheduler
1682 #.  with CFQ and AS.
1683 #. type: Plain text
1684 #: build/C/man2/clone.2:616
1685 msgid ""
1686 "The I/O context is the I/O scope of the disk scheduler (i.e., what the I/O "
1687 "scheduler uses to model scheduling of a process's I/O).  If processes share "
1688 "the same I/O context, they are treated as one by the I/O scheduler.  As a "
1689 "consequence, they get to share disk time.  For some I/O schedulers, if two "
1690 "processes share an I/O context, they will be allowed to interleave their "
1691 "disk access.  If several threads are doing I/O on behalf of the same process "
1692 "(B<aio_read>(3), for instance), they should employ B<CLONE_IO> to get better "
1693 "I/O performance."
1694 msgstr ""
1695 "I/O コンテキストは、ディスクスケジュールの I/O スコープである (言い換えると、"
1696 "I/O コンテキストは I/O スケジューラがプロセス I/O の スケジューリングをモデル"
1697 "化するのに使用される)。 複数のプロセスが同じ I/O コンテキストを共有する場"
1698 "合、 これらのプロセスは I/O スケジューラからは一つとして扱われる。 結果とし"
1699 "て、これらのプロセスはディスクアクセスの時間を共有するようになる。 いくつか"
1700 "の I/O スケジューラでは、 二つのプロセスが I/O コンテキストを共有している場"
1701 "合、 これらのプロセスはディスクアクセスを交互に行うことができる。 同じプロセ"
1702 "スの複数のスレッドが I/O を実行している場合 (例えば B<aio_read>(3))、 "
1703 "B<CLONE_IO> を利用することで I/O 性能を良くすることができる。"
1704
1705 #. type: Plain text
1706 #: build/C/man2/clone.2:620
1707 msgid ""
1708 "If the kernel is not configured with the B<CONFIG_BLOCK> option, this flag "
1709 "is a no-op."
1710 msgstr ""
1711 "カーネルの設定が B<CONFIG_BLOCK> オプション付きでない場合、 このフラグは何の"
1712 "意味も持たない。"
1713
1714 #. type: TP
1715 #: build/C/man2/clone.2:620 build/C/man2/setns.2:62 build/C/man2/unshare.2:76
1716 #, no-wrap
1717 msgid "B<CLONE_NEWCGROUP> (since Linux 4.6)"
1718 msgstr "B<CLONE_NEWCGROUP> (Linux 4.6 以降)"
1719
1720 #. type: Plain text
1721 #: build/C/man2/clone.2:626
1722 #, fuzzy
1723 #| msgid ""
1724 #| "If B<CLONE_NEWUSER> is set, then create the process in a new user "
1725 #| "namespace.  If this flag is not set, then (as with B<fork>(2))  the "
1726 #| "process is created in the same user namespace as the calling process."
1727 msgid ""
1728 "Create the process in a new cgroup namespace.  If this flag is not set, then "
1729 "(as with B<fork>(2))  the process is created in the same cgroup namespaces "
1730 "as the calling process."
1731 msgstr ""
1732 "B<CLONE_NEWUSER> がセットされている場合、新しいユーザー名前空間でプロセスを作"
1733 "成する。 このフラグがセットされていない場合、 (B<fork>(2)  の場合と同様に) 呼"
1734 "び出し元のプロセスと同じユーザー名前空間でプロセスが作成される。"
1735
1736 #. type: Plain text
1737 #: build/C/man2/clone.2:629
1738 msgid ""
1739 "For further information on cgroup namespaces, see B<cgroup_namespaces>(7)."
1740 msgstr "cgroup 名前空間の詳細は B<cgroup_namespaces>(7) を参照。"
1741
1742 #. type: Plain text
1743 #: build/C/man2/clone.2:635
1744 msgid ""
1745 "Only a privileged process (B<CAP_SYS_ADMIN>)  can employ B<CLONE_NEWCGROUP>."
1746 msgstr "特権プロセス (B<CAP_SYS_ADMIN>) だけが B<CLONE_NEWCGROUP> を使用できる。"
1747
1748 #. type: TP
1749 #: build/C/man2/clone.2:635 build/C/man2/unshare.2:88
1750 #, no-wrap
1751 msgid "B<CLONE_NEWIPC> (since Linux 2.6.19)"
1752 msgstr "B<CLONE_NEWIPC> (Linux 2.6.19 以降)"
1753
1754 #. type: Plain text
1755 #: build/C/man2/clone.2:644
1756 msgid ""
1757 "If B<CLONE_NEWIPC> is set, then create the process in a new IPC namespace.  "
1758 "If this flag is not set, then (as with B<fork>(2)), the process is created "
1759 "in the same IPC namespace as the calling process."
1760 msgstr "B<CLONE_NEWIPC> がセットされている場合、新しい IPC 名前空間でプロセスを作成する。 このフラグがセットされていない場合、 (B<fork>(2)  の場合と同様に) 呼び出し元のプロセスと同じ IPC 名前空間でプロセスが作成される。"
1761
1762 #. type: Plain text
1763 #: build/C/man2/clone.2:647
1764 msgid "For further information on IPC namespaces, see B<ipc_namespaces>(7)."
1765 msgstr "IPC 名前空間の詳細は B<ipc_namespaces>(7) を参照。"
1766
1767 #. type: Plain text
1768 #: build/C/man2/clone.2:654
1769 msgid ""
1770 "Only a privileged process (B<CAP_SYS_ADMIN>)  can employ B<CLONE_NEWIPC>.  "
1771 "This flag can't be specified in conjunction with B<CLONE_SYSVSEM>."
1772 msgstr ""
1773 "特権プロセス (B<CAP_SYS_ADMIN>) だけが B<CLONE_NEWIPC> を使用できる。 このフ"
1774 "ラグは B<CLONE_SYSVSEM> と組み合わせて指定することはできない。"
1775
1776 #. type: TP
1777 #: build/C/man2/clone.2:654 build/C/man2/unshare.2:105
1778 #, no-wrap
1779 msgid "B<CLONE_NEWNET> (since Linux 2.6.24)"
1780 msgstr "B<CLONE_NEWNET> (Linux 2.6.24 以降)"
1781
1782 #. type: Plain text
1783 #: build/C/man2/clone.2:658
1784 msgid ""
1785 "(The implementation of this flag was completed only by about kernel version "
1786 "2.6.29.)"
1787 msgstr "(このフラグの実装は、Linux 2.6.29 あたりまでには完成した。)"
1788
1789 #. type: Plain text
1790 #: build/C/man2/clone.2:666
1791 #, fuzzy
1792 #| msgid ""
1793 #| "If B<CLONE_NEWUSER> is set, then create the process in a new user "
1794 #| "namespace.  If this flag is not set, then (as with B<fork>(2))  the "
1795 #| "process is created in the same user namespace as the calling process."
1796 msgid ""
1797 "If B<CLONE_NEWNET> is set, then create the process in a new network "
1798 "namespace.  If this flag is not set, then (as with B<fork>(2))  the process "
1799 "is created in the same network namespace as the calling process."
1800 msgstr ""
1801 "B<CLONE_NEWUSER> がセットされている場合、新しいユーザー名前空間でプロセスを作"
1802 "成する。 このフラグがセットされていない場合、 (B<fork>(2)  の場合と同様に) 呼"
1803 "び出し元のプロセスと同じユーザー名前空間でプロセスが作成される。"
1804
1805 #. type: Plain text
1806 #: build/C/man2/clone.2:669
1807 msgid ""
1808 "For further information on network namespaces, see B<network_namespaces>(7)."
1809 msgstr "ネットワーク名前空間の詳細は B<network_namespaces>(7) を参照。"
1810
1811 #. type: Plain text
1812 #: build/C/man2/clone.2:674
1813 msgid ""
1814 "Only a privileged process (B<CAP_SYS_ADMIN>)  can employ B<CLONE_NEWNET>."
1815 msgstr "特権プロセス (B<CAP_SYS_ADMIN>) だけが B<CLONE_NEWNET> を使用できる。"
1816
1817 #. type: TP
1818 #: build/C/man2/clone.2:674
1819 #, no-wrap
1820 msgid "B<CLONE_NEWNS> (since Linux 2.4.19)"
1821 msgstr "B<CLONE_NEWNS> (Linux 2.4.19 以降)"
1822
1823 #. type: Plain text
1824 #: build/C/man2/clone.2:684
1825 msgid ""
1826 "If B<CLONE_NEWNS> is set, the cloned child is started in a new mount "
1827 "namespace, initialized with a copy of the namespace of the parent.  If "
1828 "B<CLONE_NEWNS> is not set, the child lives in the same mount namespace as "
1829 "the parent."
1830 msgstr ""
1831 "B<CLONE_NEWNS> がセットされている場合、 clone で作成された子プロセスは新しい"
1832 "マウント名前空間で開始され、 新しい名前空間は親プロセスの名前空間のコピーで初"
1833 "期化される。 B<CLONE_NEWNS> がセットされていない場合、 子プロセスは親プロセス"
1834 "と同じマウント名前空間となる。"
1835
1836 #. type: Plain text
1837 #: build/C/man2/clone.2:689
1838 msgid ""
1839 "For further information on mount namespaces, see B<namespaces>(7)  and "
1840 "B<mount_namespaces>(7)."
1841 msgstr "マウント名前空間の詳細は B<namespaces>(7) と B<mount_namespaces>(7) を参照。"
1842
1843 #.  See https://lwn.net/Articles/543273/
1844 #. type: Plain text
1845 #: build/C/man2/clone.2:700
1846 msgid ""
1847 "Only a privileged process (B<CAP_SYS_ADMIN>)  can employ B<CLONE_NEWNS>.  It "
1848 "is not permitted to specify both B<CLONE_NEWNS> and B<CLONE_FS> in the same "
1849 "clone call."
1850 msgstr ""
1851 "特権プロセス (B<CAP_SYS_ADMIN>) のみが B<CLONE_NEWNS> を指定することができ"
1852 "る。 一つの B<clone>()  呼び出しで、 B<CLONE_NEWNS> と B<CLONE_FS> の両方を指"
1853 "定することはできない。"
1854
1855 #. type: TP
1856 #: build/C/man2/clone.2:700
1857 #, no-wrap
1858 msgid "B<CLONE_NEWPID> (since Linux 2.6.24)"
1859 msgstr "B<CLONE_NEWPID> (Linux 2.6.24 以降)"
1860
1861 #.  This explanation draws a lot of details from
1862 #.  http://lwn.net/Articles/259217/
1863 #.  Authors: Pavel Emelyanov <xemul@openvz.org>
1864 #.  and Kir Kolyshkin <kir@openvz.org>
1865 #.  The primary kernel commit is 30e49c263e36341b60b735cbef5ca37912549264
1866 #.  Author: Pavel Emelyanov <xemul@openvz.org>
1867 #. type: Plain text
1868 #: build/C/man2/clone.2:716
1869 msgid ""
1870 "If B<CLONE_NEWPID> is set, then create the process in a new PID namespace.  "
1871 "If this flag is not set, then (as with B<fork>(2))  the process is created "
1872 "in the same PID namespace as the calling process."
1873 msgstr "B<CLONE_NEWPID> がセットされている場合、新しい PID 名前空間でプロセスを作成する。 このフラグがセットされていない場合、 (B<fork>(2)  の場合と同様に) 呼び出し元のプロセスと同じ PID 名前空間でプロセスが作成される。"
1874
1875 #. type: Plain text
1876 #: build/C/man2/clone.2:721
1877 msgid ""
1878 "For further information on PID namespaces, see B<namespaces>(7)  and "
1879 "B<pid_namespaces>(7)."
1880 msgstr "PID 名前空間の詳細は B<namespaces>(7) と B<pid_namespaces>(7) を参照。"
1881
1882 #. type: Plain text
1883 #: build/C/man2/clone.2:730
1884 msgid ""
1885 "Only a privileged process (B<CAP_SYS_ADMIN>)  can employ B<CLONE_NEWPID>.  "
1886 "This flag can't be specified in conjunction with B<CLONE_THREAD> or "
1887 "B<CLONE_PARENT>."
1888 msgstr ""
1889 "特権プロセス (B<CAP_SYS_ADMIN>) だけが B<CLONE_NEWPID> を使用できる。 このフ"
1890 "ラグは B<CLONE_THREAD> や B<CLONE_PARENT> と組み合わせて指定することはできな"
1891 "い。"
1892
1893 #. type: TP
1894 #: build/C/man2/clone.2:730
1895 #, no-wrap
1896 msgid "B<CLONE_NEWUSER>"
1897 msgstr "B<CLONE_NEWUSER>"
1898
1899 #. type: Plain text
1900 #: build/C/man2/clone.2:740
1901 msgid ""
1902 "(This flag first became meaningful for B<clone>()  in Linux 2.6.23, the "
1903 "current B<clone>()  semantics were merged in Linux 3.5, and the final pieces "
1904 "to make the user namespaces completely usable were merged in Linux 3.8.)"
1905 msgstr ""
1906 "(このフラグが B<clone>() で意味を持つようになったのは Linux 2.6.23 である。 "
1907 "現在の B<clone>() の動作が取り込まれたのは Linux 3.5 であり、 ユーザー名前空"
1908 "間が完全に機能するようにする最後の機能が取り込まれたのは Linux 3.8 である。)"
1909
1910 #. type: Plain text
1911 #: build/C/man2/clone.2:747
1912 msgid ""
1913 "If B<CLONE_NEWUSER> is set, then create the process in a new user "
1914 "namespace.  If this flag is not set, then (as with B<fork>(2))  the process "
1915 "is created in the same user namespace as the calling process."
1916 msgstr ""
1917 "B<CLONE_NEWUSER> がセットされている場合、新しいユーザー名前空間でプロセスを作"
1918 "成する。 このフラグがセットされていない場合、 (B<fork>(2)  の場合と同様に) 呼"
1919 "び出し元のプロセスと同じユーザー名前空間でプロセスが作成される。"
1920
1921 #. type: Plain text
1922 #: build/C/man2/clone.2:752
1923 msgid ""
1924 "For further information on user namespaces, see B<namespaces>(7)  and "
1925 "B<user_namespaces>(7)."
1926 msgstr ""
1927 "ユーザー名前空間の詳細は B<namespaces>(7) と B<user_namespaces>(7) を参照。"
1928
1929 #.  Before Linux 2.6.29, it appears that only CAP_SYS_ADMIN was needed
1930 #. type: Plain text
1931 #: build/C/man2/clone.2:763
1932 msgid ""
1933 "Before Linux 3.8, use of B<CLONE_NEWUSER> required that the caller have "
1934 "three capabilities: B<CAP_SYS_ADMIN>, B<CAP_SETUID>, and B<CAP_SETGID>.  "
1935 "Starting with Linux 3.8, no privileges are needed to create a user namespace."
1936 msgstr ""
1937 "Linux 3.8 より前では、 B<CLONE_NEWUSER> を使用するには、 呼び出し元は "
1938 "B<CAP_SYS_ADMIN>, B<CAP_SETUID>, B<CAP_SETGID> の 3 つのケーパリビティを持っ"
1939 "ている必要があった。 Linux 3.8 以降では、 ユーザー名前空間を作成するのに特権"
1940 "は必要なくなった。"
1941
1942 #.  commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71
1943 #.  https://lwn.net/Articles/543273/
1944 #.  The fix actually went into 3.9 and into 3.8.3. However, user namespaces
1945 #.  were, for practical purposes, unusable in earlier 3.8.x because of the
1946 #.  various filesystems that didn't support userns.
1947 #. type: Plain text
1948 #: build/C/man2/clone.2:777
1949 msgid ""
1950 "This flag can't be specified in conjunction with B<CLONE_THREAD> or "
1951 "B<CLONE_PARENT>.  For security reasons, B<CLONE_NEWUSER> cannot be specified "
1952 "in conjunction with B<CLONE_FS>."
1953 msgstr ""
1954 "このフラグは B<CLONE_THREAD> や B<CLONE_PARENT> と組み合わせて指定することは"
1955 "できない。 セキュリティ上の理由から、 B<CLONE_NEWUSER> は B<CLONE_FS> と組み"
1956 "合わせて指定することはできない。"
1957
1958 #. type: TP
1959 #: build/C/man2/clone.2:777 build/C/man2/unshare.2:218
1960 #, no-wrap
1961 msgid "B<CLONE_NEWUTS> (since Linux 2.6.19)"
1962 msgstr "B<CLONE_NEWUTS> (Linux 2.6.19 以降)"
1963
1964 #. type: Plain text
1965 #: build/C/man2/clone.2:788
1966 msgid ""
1967 "If B<CLONE_NEWUTS> is set, then create the process in a new UTS namespace, "
1968 "whose identifiers are initialized by duplicating the identifiers from the "
1969 "UTS namespace of the calling process.  If this flag is not set, then (as "
1970 "with B<fork>(2))  the process is created in the same UTS namespace as the "
1971 "calling process."
1972 msgstr "B<CLONE_NEWUTS> が設定された場合、新しい UTS 名前空間でプロセスを作成する。 新しい UTS 名前空間の識別子の初期値は、呼び出し元のプロセスの UTS 名前空間の識別子を複製したものとなる。 このフラグが設定されていない場合、 (B<fork>(2)  の場合と同様) 呼び出し元のプロセスと同じ UTS 名前空間で プロセスが作成される。"
1973
1974 #. type: Plain text
1975 #: build/C/man2/clone.2:791
1976 msgid "For further information on UTS namespaces, see B<uts_namespaces>(7)."
1977 msgstr "UTS 名前空間の詳細は B<uts_namespaces>(7) を参照。"
1978
1979 #. type: Plain text
1980 #: build/C/man2/clone.2:796
1981 msgid ""
1982 "Only a privileged process (B<CAP_SYS_ADMIN>)  can employ B<CLONE_NEWUTS>."
1983 msgstr "特権プロセス (B<CAP_SYS_ADMIN>) だけが B<CLONE_NEWUTS> を使用できる。"
1984
1985 #. type: TP
1986 #: build/C/man2/clone.2:796
1987 #, no-wrap
1988 msgid "B<CLONE_PARENT> (since Linux 2.3.12)"
1989 msgstr "B<CLONE_PARENT> (Linux 2.3.12 以降)"
1990
1991 #. type: Plain text
1992 #: build/C/man2/clone.2:803
1993 msgid ""
1994 "If B<CLONE_PARENT> is set, then the parent of the new child (as returned by "
1995 "B<getppid>(2))  will be the same as that of the calling process."
1996 msgstr ""
1997 "B<CLONE_PARENT> が設定された場合、新しい子供の (B<getppid>(2)  で返される) 親"
1998 "プロセスは呼び出し元のプロセスの親プロセスと同じになる。"
1999
2000 #. type: Plain text
2001 #: build/C/man2/clone.2:809
2002 msgid ""
2003 "If B<CLONE_PARENT> is not set, then (as with B<fork>(2))  the child's parent "
2004 "is the calling process."
2005 msgstr ""
2006 "B<CLONE_PARENT> が設定されていない場合、 (B<fork>(2)  と同様に) 呼び出し元の"
2007 "プロセスがその子供の親になる。"
2008
2009 #. type: Plain text
2010 #: build/C/man2/clone.2:817
2011 msgid ""
2012 "Note that it is the parent process, as returned by B<getppid>(2), which is "
2013 "signaled when the child terminates, so that if B<CLONE_PARENT> is set, then "
2014 "the parent of the calling process, rather than the calling process itself, "
2015 "will be signaled."
2016 msgstr ""
2017 "子供が終了した時にシグナルが送られるのは B<getppid>(2)  が返す親プロセスであ"
2018 "る点に注意すること。このため B<CLONE_PARENT> が設定された場合、呼び出し元のプ"
2019 "ロセスではなく呼び出し元のプロセスの 親プロセスにシグナルが送られる。"
2020
2021 #. type: Plain text
2022 #: build/C/man2/clone.2:825
2023 msgid ""
2024 "The B<CLONE_PARENT> flag can't be used in clone calls by the global init "
2025 "process (PID 1 in the initial PID namespace)  and init processes in other "
2026 "PID namespaces.  This restriction prevents the creation of multi-rooted "
2027 "process trees as well as the creation of unreapable zombies in the initial "
2028 "PID namespace."
2029 msgstr ""
2030
2031 #. type: TP
2032 #: build/C/man2/clone.2:825
2033 #, no-wrap
2034 msgid "B<CLONE_PARENT_SETTID> (since Linux 2.5.49)"
2035 msgstr "B<CLONE_PARENT_SETTID> (Linux 2.5.49 以降)"
2036
2037 #. type: Plain text
2038 #: build/C/man2/clone.2:839
2039 #, fuzzy
2040 #| msgid ""
2041 #| "Store child thread ID at location I<ptid> in parent and child memory.  "
2042 #| "(In Linux 2.5.32-2.5.48 there was a flag B<CLONE_SETTID> that did this.)"
2043 msgid ""
2044 "Store the child thread ID at the location pointed to by I<parent_tid> "
2045 "(B<clone>())  or I<cl_args.parent_tid> (B<clone3>())  in the parent's "
2046 "memory.  (In Linux 2.5.32-2.5.48 there was a flag B<CLONE_SETTID> that did "
2047 "this.)  The store operation completes before the clone call returns control "
2048 "to user space."
2049 msgstr ""
2050 "親プロセスと子プロセスのメモリー内の I<ptid> が指す領域に子プロセスのスレッ"
2051 "ド ID を格納する。 (Linux 2.5.32-2.5.48 では、 同じことをする "
2052 "B<CLONE_SETTID> というフラグが存在した。)"
2053
2054 #. type: TP
2055 #: build/C/man2/clone.2:839
2056 #, no-wrap
2057 msgid "B<CLONE_PID> (Linux 2.0 to 2.5.15)"
2058 msgstr " B<CLONE_PID> (Linux 2.0 to 2.5.15)"
2059
2060 #. type: Plain text
2061 #: build/C/man2/clone.2:856
2062 #, fuzzy
2063 #| msgid ""
2064 #| "If B<CLONE_PID> is set, the child process is created with the same "
2065 #| "process ID as the calling process.  This is good for hacking the system, "
2066 #| "but otherwise of not much use.  Since 2.3.21 this flag can be specified "
2067 #| "only by the system boot process (PID 0).  It disappeared in Linux 2.5.16."
2068 msgid ""
2069 "If B<CLONE_PID> is set, the child process is created with the same process "
2070 "ID as the calling process.  This is good for hacking the system, but "
2071 "otherwise of not much use.  From Linux 2.3.21 onward, this flag could be "
2072 "specified only by the system boot process (PID 0).  The flag disappeared "
2073 "completely from the kernel sources in Linux 2.5.16.  Subsequently, the "
2074 "kernel silently ignored this bit if it was specified in the I<flags> mask.  "
2075 "Much later, the same bit was recycled for use as the B<CLONE_PIDFD> flag."
2076 msgstr ""
2077 "B<CLONE_PID> が設定された場合、子プロセスは呼び出し元のプロセスと同じプロセ"
2078 "ス ID で作成される。これはシステムをハッキングするのには便利だが、 それ以外に"
2079 "はあまり使われない。 Linux 2.3.21 以降では、 システムのブートプロセス (PID "
2080 "0) だけがこのフラグを指定できる。 Linux 2.5.16 で削除された。"
2081
2082 #. type: TP
2083 #: build/C/man2/clone.2:856
2084 #, no-wrap
2085 msgid "B<CLONE_PIDFD> (since Linux 5.2)"
2086 msgstr "B<CLONE_PIDFD> (Linux 5.2 以降)"
2087
2088 #.  commit b3e5838252665ee4cfa76b82bdf1198dca81e5be
2089 #. type: Plain text
2090 #: build/C/man2/clone.2:865
2091 msgid ""
2092 "If this flag is specified, a PID file descriptor referring to the child "
2093 "process is allocated and placed at a specified location in the parent's "
2094 "memory.  The close-on-exec flag is set on this new file descriptor.  PID "
2095 "file descriptors can be used for the purposes described in B<pidfd_open>(2)."
2096 msgstr ""
2097
2098 #. type: Plain text
2099 #: build/C/man2/clone.2:871
2100 msgid ""
2101 "When using B<clone3>(), the PID file descriptor is placed at the location "
2102 "pointed to by I<cl_args.pidfd>."
2103 msgstr ""
2104
2105 #. type: Plain text
2106 #: build/C/man2/clone.2:884
2107 msgid ""
2108 "When using B<clone>(), the PID file descriptor is placed at the location "
2109 "pointed to by I<parent_tid>.  Since the I<parent_tid> argument is used to "
2110 "return the PID file descriptor, B<CLONE_PIDFD> cannot be used with "
2111 "B<CLONE_PARENT_SETTID> when calling B<clone>()."
2112 msgstr ""
2113
2114 #. type: Plain text
2115 #: build/C/man2/clone.2:890
2116 msgid ""
2117 "It is currently not possible to use this flag together with B<CLONE_THREAD.> "
2118 "This means that the process identified by the PID file descriptor will "
2119 "always be a thread group leader."
2120 msgstr ""
2121
2122 #. type: Plain text
2123 #: build/C/man2/clone.2:905
2124 msgid ""
2125 "If the obsolete B<CLONE_DETACHED> flag is specified alongside B<CLONE_PIDFD> "
2126 "when calling B<clone>(), an error is returned.  An error also results if "
2127 "B<CLONE_DETACHED> is specified when calling B<clone3>().  This error "
2128 "behavior ensures that the bit corresponding to B<CLONE_DETACHED> can be "
2129 "reused for further PID file descriptor features in the future."
2130 msgstr ""
2131
2132 #. type: TP
2133 #: build/C/man2/clone.2:905
2134 #, no-wrap
2135 msgid "B<CLONE_PTRACE> (since Linux 2.2)"
2136 msgstr "B<CLONE_PTRACE> (Linux 2.2 以降)"
2137
2138 #. type: Plain text
2139 #: build/C/man2/clone.2:912
2140 msgid ""
2141 "If B<CLONE_PTRACE> is specified, and the calling process is being traced, "
2142 "then trace the child also (see B<ptrace>(2))."
2143 msgstr ""
2144 "B<CLONE_PTRACE> が指定され、かつ呼び出し元のプロセスが追跡 (trace) されていた"
2145 "場合、子プロセスも 同様に追跡される。 (B<ptrace>(2)  を参照のこと)"
2146
2147 #. type: TP
2148 #: build/C/man2/clone.2:912
2149 #, no-wrap
2150 msgid "B<CLONE_SETTLS> (since Linux 2.5.32)"
2151 msgstr "B<CLONE_SETTLS> (Linux 2.5.32 以降)"
2152
2153 #. type: Plain text
2154 #: build/C/man2/clone.2:916
2155 #, fuzzy
2156 #| msgid ""
2157 #| "The I<newtls> argument is the new TLS (Thread Local Storage) descriptor.  "
2158 #| "(See B<set_thread_area>(2).)"
2159 msgid "The TLS (Thread Local Storage) descriptor is set to I<tls>."
2160 msgstr ""
2161 "I<newtls> 引き数は、新しい TLS (Thread Local Storage) ディスクリプターであ"
2162 "る。 (B<set_thread_area>(2)  を参照のこと)"
2163
2164 #. type: Plain text
2165 #: build/C/man2/clone.2:933
2166 msgid ""
2167 "The interpretation of I<tls> and the resulting effect is architecture "
2168 "dependent.  On x86, I<tls> is interpreted as a I<struct user_desc\\ *> (see "
2169 "B<set_thread_area>(2)).  On x86-64 it is the new value to be set for the %fs "
2170 "base register (see the B<ARCH_SET_FS> argument to B<arch_prctl>(2)).  On "
2171 "architectures with a dedicated TLS register, it is the new value of that "
2172 "register."
2173 msgstr ""
2174
2175 #. type: Plain text
2176 #: build/C/man2/clone.2:936
2177 msgid ""
2178 "Use of this flag requires detailed knowledge and generally it should not be "
2179 "used except in libraries implementing threading."
2180 msgstr ""
2181
2182 #. type: TP
2183 #: build/C/man2/clone.2:936
2184 #, no-wrap
2185 msgid "B<CLONE_SIGHAND> (since Linux 2.0)"
2186 msgstr "B<CLONE_SIGHAND> (Linux 2.0 以降)"
2187
2188 #. type: Plain text
2189 #: build/C/man2/clone.2:952
2190 msgid ""
2191 "If B<CLONE_SIGHAND> is set, the calling process and the child process share "
2192 "the same table of signal handlers.  If the calling process or child process "
2193 "calls B<sigaction>(2)  to change the behavior associated with a signal, the "
2194 "behavior is changed in the other process as well.  However, the calling "
2195 "process and child processes still have distinct signal masks and sets of "
2196 "pending signals.  So, one of them may block or unblock signals using "
2197 "B<sigprocmask>(2)  without affecting the other process."
2198 msgstr ""
2199 "B<CLONE_SIGHAND> が設定された場合、呼び出し元のプロセスと子プロセスは同じシグ"
2200 "ナルハン ドラのテーブルを共有する。呼び出し元のプロセスまたは子プロセスのどち"
2201 "らかが B<sigaction>(2)  を呼び出してシグナルに対応する動作を変更した場合、 も"
2202 "う一方のプロセスのシグナル動作も変更される。 但し、呼び出し元のプロセスと子プ"
2203 "ロセスは、 プロセス毎に、シグナルマスク (signal mask) と処理待ちシグナルの集"
2204 "合 を持っている。このため、あるプロセスは、 B<sigprocmask>(2)  を使用して、も"
2205 "う一方のプロセスに影響を与えずに シグナルを禁止 (block) したり許可 (unblock) "
2206 "したりできる。"
2207
2208 #. type: Plain text
2209 #: build/C/man2/clone.2:961
2210 msgid ""
2211 "If B<CLONE_SIGHAND> is not set, the child process inherits a copy of the "
2212 "signal handlers of the calling process at the time of the clone call.  Calls "
2213 "to B<sigaction>(2)  performed later by one of the processes have no effect "
2214 "on the other process."
2215 msgstr ""
2216 "B<CLONE_SIGHAND> が設定されていない場合、子プロセスは B<clone>()  が実行され"
2217 "た時点での、呼び出し元のプロセスのシグナルハンドラーの コピーを継承する。これ"
2218 "以降は、一方のプロセスが B<sigaction>(2)  を呼び出しても、もう一方のプロセス"
2219 "には影響を与えない。"
2220
2221 #.  Precisely: Linux 2.6.0-test6
2222 #. type: Plain text
2223 #: build/C/man2/clone.2:971
2224 msgid ""
2225 "Since Linux 2.6.0, the I<flags> mask must also include B<CLONE_VM> if "
2226 "B<CLONE_SIGHAND> is specified"
2227 msgstr "Linux 2.6.0 以降では、 B<CLONE_SIGHAND> を指定する場合、 B<CLONE_VM> も I<flags> マスクに含めなければならない。"
2228
2229 #. type: TP
2230 #: build/C/man2/clone.2:971
2231 #, no-wrap
2232 msgid "B<CLONE_STOPPED> (since Linux 2.6.0)"
2233 msgstr "B<CLONE_STOPPED> (Linux 2.6.0 以降)"
2234
2235 #.  Precisely: Linux 2.6.0-test2
2236 #. type: Plain text
2237 #: build/C/man2/clone.2:981
2238 msgid ""
2239 "If B<CLONE_STOPPED> is set, then the child is initially stopped (as though "
2240 "it was sent a B<SIGSTOP> signal), and must be resumed by sending it a "
2241 "B<SIGCONT> signal."
2242 msgstr ""
2243 "B<CLONE_STOPPED> が設定されると、子プロセスは最初 (B<SIGSTOP> シグナルを送ら"
2244 "れたかのように) 停止した状態となる。 子プロセスを再開させるには B<SIGCONT> シ"
2245 "グナルを送信しなければならない。"
2246
2247 #.  glibc 2.8 removed this defn from bits/sched.h
2248 #. type: Plain text
2249 #: build/C/man2/clone.2:993
2250 msgid ""
2251 "This flag was I<deprecated> from Linux 2.6.25 onward, and was I<removed> "
2252 "altogether in Linux 2.6.38.  Since then, the kernel silently ignores it "
2253 "without error.  Starting with Linux 4.6, the same bit was reused for the "
2254 "B<CLONE_NEWCGROUP> flag."
2255 msgstr ""
2256
2257 #. type: TP
2258 #: build/C/man2/clone.2:993
2259 #, no-wrap
2260 msgid "B<CLONE_SYSVSEM> (since Linux 2.5.10)"
2261 msgstr "B<CLONE_SYSVSEM> (Linux 2.5.10 以降)"
2262
2263 #. type: Plain text
2264 #: build/C/man2/clone.2:1011
2265 msgid ""
2266 "If B<CLONE_SYSVSEM> is set, then the child and the calling process share a "
2267 "single list of System V semaphore adjustment (I<semadj>)  values (see "
2268 "B<semop>(2)).  In this case, the shared list accumulates I<semadj> values "
2269 "across all processes sharing the list, and semaphore adjustments are "
2270 "performed only when the last process that is sharing the list terminates (or "
2271 "ceases sharing the list using B<unshare>(2)).  If this flag is not set, then "
2272 "the child has a separate I<semadj> list that is initially empty."
2273 msgstr ""
2274 "B<CLONE_SYSVSEM> がセットされると、子プロセスと呼び出し元プロセスは一つの "
2275 "System\\ V セマフォの調整値 (I<semadj>) (B<semop>(2)  参照) を共有する。 この"
2276 "場合、共有されたリストはこのリストを共有する全プロセスの I<semadj> 値を積算"
2277 "し、 セマフォ調整はこのリストを共有している最後のプロセスが終了した際 (また"
2278 "は B<unshare>(2) を使ってリストの共有が中止された際) に実行される。 このフラ"
2279 "グがセットされていなければ、 子プロセスは独自のセマフォ I<semadj> リストを持"
2280 "つ (リストの初期値は空である)。"
2281
2282 #. type: TP
2283 #: build/C/man2/clone.2:1011
2284 #, no-wrap
2285 msgid "B<CLONE_THREAD> (since Linux 2.4.0)"
2286 msgstr "B<CLONE_THREAD> (Linux 2.4.0 以降)"
2287
2288 #.  Precisely: Linux 2.6.0-test8
2289 #. type: Plain text
2290 #: build/C/man2/clone.2:1021
2291 msgid ""
2292 "If B<CLONE_THREAD> is set, the child is placed in the same thread group as "
2293 "the calling process.  To make the remainder of the discussion of "
2294 "B<CLONE_THREAD> more readable, the term \"thread\" is used to refer to the "
2295 "processes within a thread group."
2296 msgstr ""
2297 "B<CLONE_THREAD> が設定された場合、子プロセスは呼び出し元のプロセスと同じス"
2298 "レッドグループに 置かれる。 B<CLONE_THREAD> についての以降の議論を読みやすく"
2299 "するため、 「スレッド」という用語はスレッドグループの中のプロセスを 参照する"
2300 "のに使うこととする。"
2301
2302 #. type: Plain text
2303 #: build/C/man2/clone.2:1029
2304 msgid ""
2305 "Thread groups were a feature added in Linux 2.4 to support the POSIX threads "
2306 "notion of a set of threads that share a single PID.  Internally, this shared "
2307 "PID is the so-called thread group identifier (TGID) for the thread group.  "
2308 "Since Linux 2.4, calls to B<getpid>(2)  return the TGID of the caller."
2309 msgstr ""
2310 "スレッドグループは、 スレッド集合で一つの PID を共有するという POSIX スレッド"
2311 "の概念をサポートするために Linux 2.4 に加えられた機能であった。 内部的には、"
2312 "この共有 PID はいわゆるそのスレッドグループの スレッドグループ識別子 (TGID) "
2313 "である。 Linux 2.4 以降では、 B<getpid>(2)  の呼び出しではそのプロセスのス"
2314 "レッドグループ ID を返す。"
2315
2316 #. type: Plain text
2317 #: build/C/man2/clone.2:1037
2318 msgid ""
2319 "The threads within a group can be distinguished by their (system-wide)  "
2320 "unique thread IDs (TID).  A new thread's TID is available as the function "
2321 "result returned to the caller, and a thread can obtain its own TID using "
2322 "B<gettid>(2)."
2323 msgstr "あるグループに属するスレッドは (システム全体で) 一意なスレッド ID (TID)  で区別できる。新しいスレッドの TID は呼び出し元へ関数の結果として返され、 スレッドは自分自身の TID を B<gettid>(2)  で取得できる。"
2324
2325 #. type: Plain text
2326 #: build/C/man2/clone.2:1045
2327 msgid ""
2328 "When a clone call is made without specifying B<CLONE_THREAD>, then the "
2329 "resulting thread is placed in a new thread group whose TGID is the same as "
2330 "the thread's TID.  This thread is the I<leader> of the new thread group."
2331 msgstr "B<CLONE_THREAD> を指定せずに clone の呼び出しが行われると、 生成されたスレッドはそのスレッドの TID と同じ値の TGID を持つ 新しいスレッドグループに置かれる。このスレッドは 新しいスレッドグループの「リーダー」である。"
2332
2333 #. type: Plain text
2334 #: build/C/man2/clone.2:1064
2335 #, fuzzy
2336 #| msgid ""
2337 #| "A new thread created with B<CLONE_THREAD> has the same parent process as "
2338 #| "the caller of B<clone>()  (i.e., like B<CLONE_PARENT>), so that calls to "
2339 #| "B<getppid>(2)  return the same value for all of the threads in a thread "
2340 #| "group.  When a B<CLONE_THREAD> thread terminates, the thread that created "
2341 #| "it using B<clone>()  is not sent a B<SIGCHLD> (or other termination) "
2342 #| "signal; nor can the status of such a thread be obtained using "
2343 #| "B<wait>(2).  (The thread is said to be I<detached>.)"
2344 msgid ""
2345 "A new thread created with B<CLONE_THREAD> has the same parent process as the "
2346 "process that made the clone call (i.e., like B<CLONE_PARENT>), so that calls "
2347 "to B<getppid>(2)  return the same value for all of the threads in a thread "
2348 "group.  When a B<CLONE_THREAD> thread terminates, the thread that created it "
2349 "is not sent a B<SIGCHLD> (or other termination) signal; nor can the status "
2350 "of such a thread be obtained using B<wait>(2).  (The thread is said to be "
2351 "I<detached>.)"
2352 msgstr ""
2353 "B<CLONE_THREAD> を指定して作成された新しいスレッドは、 (B<CLONE_PARENT> の場"
2354 "合と同様に)  B<clone>()  を呼び出し元と同じ親プロセスを持つ。 そのため、 "
2355 "B<getppid>(2)  を呼ぶと、一つのスレッドグループに属すスレッドは全て同じ値を返"
2356 "す。 B<CLONE_THREAD> で作られたスレッドが終了した際に、 そのスレッドを "
2357 "B<clone>()  を使って生成したスレッドには B<SIGCHLD> (もしくは他の終了シグナ"
2358 "ル) は送信されない。 また、 B<wait>(2)  を使って終了したスレッドの状態を取得"
2359 "することもできない (そのようなスレッドは I<detached> (分離された) といわれ"
2360 "る)。"
2361
2362 #. type: Plain text
2363 #: build/C/man2/clone.2:1069
2364 msgid ""
2365 "After all of the threads in a thread group terminate the parent process of "
2366 "the thread group is sent a B<SIGCHLD> (or other termination) signal."
2367 msgstr ""
2368 "スレッドグループに属す全てのスレッドが終了した後、 そのスレッドグループの親プ"
2369 "ロセスに B<SIGCHLD> (もしくは他の終了シグナル) が送られる。"
2370
2371 #. type: Plain text
2372 #: build/C/man2/clone.2:1074
2373 msgid ""
2374 "If any of the threads in a thread group performs an B<execve>(2), then all "
2375 "threads other than the thread group leader are terminated, and the new "
2376 "program is executed in the thread group leader."
2377 msgstr ""
2378 "スレッドグループに属すいずれかのスレッドが B<execve>(2)  を実行すると、スレッ"
2379 "ドグループリーダー以外の全てのスレッドは 終了され、新しいプロセスがそのスレッ"
2380 "ドグループリーダーの下で 実行される。"
2381
2382 #. type: Plain text
2383 #: build/C/man2/clone.2:1080
2384 msgid ""
2385 "If one of the threads in a thread group creates a child using B<fork>(2), "
2386 "then any thread in the group can B<wait>(2)  for that child."
2387 msgstr ""
2388 "スレッドグループに属すスレッドの一つが B<fork>(2)  を使って子プロセスを作成し"
2389 "た場合、 スレッドグループのどのスレッドであっても その子供を B<wait>(2)  でき"
2390 "る。"
2391
2392 #.  Precisely: Linux 2.6.0-test6
2393 #. type: Plain text
2394 #: build/C/man2/clone.2:1094
2395 msgid ""
2396 "Since Linux 2.5.35, the I<flags> mask must also include B<CLONE_SIGHAND> if "
2397 "B<CLONE_THREAD> is specified (and note that, since Linux 2.6.0, "
2398 "B<CLONE_SIGHAND> also requires B<CLONE_VM> to be included)."
2399 msgstr "Linux 2.5.35 以降では、 B<CLONE_THREAD> を指定する場合、 I<flags> マスクに B<CLONE_SIGHAND> も含まれていなければならない (Linux 2.6.0 以降では、 B<CLONE_SIGHAND> を指定する場合 B<CLONE_VM> も指定する必要がある点に注意すること)。"
2400
2401 #. type: Plain text
2402 #: build/C/man2/clone.2:1099
2403 msgid ""
2404 "Signal dispositions and actions are process-wide: if an unhandled signal is "
2405 "delivered to a thread, then it will affect (terminate, stop, continue, be "
2406 "ignored in)  all members of the thread group."
2407 msgstr ""
2408 "シグナルの配送と処理はプロセス全体に影響する: ハンドラーを設定していないシグ"
2409 "ナルがあるスレッドに配送されると、 そのシグナルはスレッドグループの全メンバー"
2410 "に影響を及ぼす (終了したり、停止したり、動作を継続したり、無視されたりする)。"
2411
2412 #. type: Plain text
2413 #: build/C/man2/clone.2:1102
2414 msgid "Each thread has its own signal mask, as set by B<sigprocmask>(2)."
2415 msgstr ""
2416
2417 #. type: Plain text
2418 #: build/C/man2/clone.2:1124
2419 msgid ""
2420 "A signal may be process-directed or thread-directed.  A process-directed "
2421 "signal is targeted at a thread group (i.e., a TGID), and is delivered to an "
2422 "arbitrarily selected thread from among those that are not blocking the "
2423 "signal.  A signal may be process-directed because it was generated by the "
2424 "kernel for reasons other than a hardware exception, or because it was sent "
2425 "using B<kill>(2)  or B<sigqueue>(3).  A thread-directed signal is targeted "
2426 "at (i.e., delivered to)  a specific thread.  A signal may be thread directed "
2427 "because it was sent using B<tgkill>(2)  or B<pthread_sigqueue>(3), or "
2428 "because the thread executed a machine language instruction that triggered a "
2429 "hardware exception (e.g., invalid memory access triggering B<SIGSEGV> or a "
2430 "floating-point exception triggering B<SIGFPE>)."
2431 msgstr ""
2432
2433 #. type: Plain text
2434 #: build/C/man2/clone.2:1129
2435 msgid ""
2436 "A call to B<sigpending>(2)  returns a signal set that is the union of the "
2437 "pending process-directed signals and the signals that are pending for the "
2438 "calling thread."
2439 msgstr ""
2440
2441 #. type: Plain text
2442 #: build/C/man2/clone.2:1138
2443 #, fuzzy
2444 #| msgid ""
2445 #| "If B<kill>(2)  is used to send a signal to a thread group, and the thread "
2446 #| "group has installed a handler for the signal, then the handler will be "
2447 #| "invoked in exactly one, arbitrarily selected member of the thread group "
2448 #| "that has not blocked the signal.  If multiple threads in a group are "
2449 #| "waiting to accept the same signal using B<sigwaitinfo>(2), the kernel "
2450 #| "will arbitrarily select one of these threads to receive a signal sent "
2451 #| "using B<kill>(2)."
2452 msgid ""
2453 "If a process-directed signal is delivered to a thread group, and the thread "
2454 "group has installed a handler for the signal, then the handler will be "
2455 "invoked in exactly one, arbitrarily selected member of the thread group that "
2456 "has not blocked the signal.  If multiple threads in a group are waiting to "
2457 "accept the same signal using B<sigwaitinfo>(2), the kernel will arbitrarily "
2458 "select one of these threads to receive the signal."
2459 msgstr ""
2460 "B<kill>(2)  を使ってスレッドグループにシグナルが送られた場合で、 そのスレッド"
2461 "グループがそのシグナルに対するシグナルハンドラーが 登録されていたときには、シ"
2462 "グナルハンドラーはスレッドグループの メンバーのうち、ただ一つのスレッドでだけ"
2463 "起動される。ハンドラーが 起動されるスレッドは、そのシグナルを禁止 (block) し"
2464 "ていない メンバーの中から一つだけが勝手に (arbitrarily) 選ばれる。 スレッドグ"
2465 "ループに属す複数のスレッドが B<sigwaitinfo>(2)  を使って同じシグナルを待って"
2466 "いる場合、 これらのスレッドの中から一つをカーネルが勝手に選択し、 そのスレッ"
2467 "ドが B<kill (2)> を使って送信されたシグナルを受信する。"
2468
2469 #. type: TP
2470 #: build/C/man2/clone.2:1138
2471 #, no-wrap
2472 msgid "B<CLONE_UNTRACED> (since Linux 2.5.46)"
2473 msgstr "B<CLONE_UNTRACED> (Linux 2.5.46 以降)"
2474
2475 #. type: Plain text
2476 #: build/C/man2/clone.2:1145
2477 msgid ""
2478 "If B<CLONE_UNTRACED> is specified, then a tracing process cannot force "
2479 "B<CLONE_PTRACE> on this child process."
2480 msgstr ""
2481 "B<CLONE_UNTRACED> が指定されると、 trace を行っているプロセスは この子プロセ"
2482 "スに B<CLONE_PTRACE> を適用することができない。"
2483
2484 #. type: TP
2485 #: build/C/man2/clone.2:1145
2486 #, no-wrap
2487 msgid "B<CLONE_VFORK> (since Linux 2.2)"
2488 msgstr "B<CLONE_VFORK> (Linux 2.2 以降)"
2489
2490 #. type: Plain text
2491 #: build/C/man2/clone.2:1157
2492 msgid ""
2493 "If B<CLONE_VFORK> is set, the execution of the calling process is suspended "
2494 "until the child releases its virtual memory resources via a call to "
2495 "B<execve>(2)  or B<_exit>(2)  (as with B<vfork>(2))."
2496 msgstr ""
2497 "B<CLONE_VFORK> が設定された場合、 (B<vfork>(2)  と同様に) 子プロセスが "
2498 "B<execve>(2)  または B<_exit>(2)  によって仮想メモリーを解放するまで、呼び出"
2499 "し元のプロセスの実行は停止される。"
2500
2501 #. type: Plain text
2502 #: build/C/man2/clone.2:1163
2503 msgid ""
2504 "If B<CLONE_VFORK> is not set, then both the calling process and the child "
2505 "are schedulable after the call, and an application should not rely on "
2506 "execution occurring in any particular order."
2507 msgstr ""
2508 "B<CLONE_VFORK> が設定されていない場合、 B<clone>()  呼び出し後は、呼び出し元"
2509 "のプロセスと子プロセスの 両方がスケジュール対象となり、アプリケーションはこれ"
2510 "らのプロセスの 実行順序に依存しないようにすべきである。"
2511
2512 #. type: TP
2513 #: build/C/man2/clone.2:1163
2514 #, no-wrap
2515 msgid "B<CLONE_VM> (since Linux 2.0)"
2516 msgstr "B<CLONE_VM> (Linux 2.0 以降)"
2517
2518 #. type: Plain text
2519 #: build/C/man2/clone.2:1176
2520 msgid ""
2521 "If B<CLONE_VM> is set, the calling process and the child process run in the "
2522 "same memory space.  In particular, memory writes performed by the calling "
2523 "process or by the child process are also visible in the other process.  "
2524 "Moreover, any memory mapping or unmapping performed with B<mmap>(2)  or "
2525 "B<munmap>(2)  by the child or calling process also affects the other process."
2526 msgstr ""
2527 "B<CLONE_VM> が設定された場合、呼び出し元のプロセスと子プロセスは同じメモリー"
2528 "空間で 実行される。特に、呼び出し元のプロセスや子プロセスの一方がメモリーに "
2529 "書き込んだ内容はもう一方のプロセスからも見ることができる。さらに、 子プロセス"
2530 "や呼び出し元のプロセスの一方が B<mmap>(2)  や B<munmap>(2)  を使ってメモリー"
2531 "をマップしたりアンマップした場合、 もう一方のプロセスにも影響が及ぶ。"
2532
2533 #. type: Plain text
2534 #: build/C/man2/clone.2:1184
2535 msgid ""
2536 "If B<CLONE_VM> is not set, the child process runs in a separate copy of the "
2537 "memory space of the calling process at the time of the clone call.  Memory "
2538 "writes or file mappings/unmappings performed by one of the processes do not "
2539 "affect the other, as with B<fork>(2)."
2540 msgstr "B<CLONE_VM> が設定されていない場合、子プロセスは clone が呼ばれた時点での、親プロセスのメモリー空間をコピーした 別のメモリー空間で実行される。 一方のプロセスが行ったメモリーへの書き込みや ファイルのマップ/アンマップは、 B<fork>(2)  の場合と同様、もう一方のプロセスには影響しない。"
2541
2542 #. type: Plain text
2543 #: build/C/man2/clone.2:1193
2544 msgid ""
2545 "If the B<CLONE_VM> flag is specified and the B<CLONE_VM> flag is not "
2546 "specified, then any alternate signal stack that was established by "
2547 "B<sigaltstack>(2)  is cleared in the child process."
2548 msgstr ""
2549
2550 #.  gettid(2) returns current->pid;
2551 #.  getpid(2) returns current->tgid;
2552 #. type: Plain text
2553 #: build/C/man2/clone.2:1202
2554 msgid ""
2555 "On success, the thread ID of the child process is returned in the caller's "
2556 "thread of execution.  On failure, -1 is returned in the caller's context, no "
2557 "child process will be created, and I<errno> will be set appropriately."
2558 msgstr ""
2559 "成功した場合、呼び出し元の実行スレッドには子プロセスのスレッドID が返され"
2560 "る。 失敗した場合、 呼び出し元のコンテキストには -1 が返され、子プロセスは 作"
2561 "成されず、 I<errno> が適切に設定される。"
2562
2563 #. type: SH
2564 #: build/C/man2/clone.2:1202 build/C/man2/kcmp.2:251
2565 #: build/C/man2/sched_get_priority_max.2:108 build/C/man3/sched_getcpu.3:65
2566 #: build/C/man2/sched_rr_get_interval.2:80 build/C/man2/sched_setaffinity.2:119
2567 #: build/C/man2/sched_setattr.2:308 build/C/man2/sched_setparam.2:96
2568 #: build/C/man2/sched_setscheduler.2:143 build/C/man2/sched_yield.2:48
2569 #: build/C/man2/setns.2:252 build/C/man2/unshare.2:291
2570 #, no-wrap
2571 msgid "ERRORS"
2572 msgstr "エラー"
2573
2574 #. type: TP
2575 #: build/C/man2/clone.2:1203
2576 #, no-wrap
2577 msgid "B<EAGAIN>"
2578 msgstr "B<EAGAIN>"
2579
2580 #. type: Plain text
2581 #: build/C/man2/clone.2:1207
2582 msgid "Too many processes are already running; see B<fork>(2)."
2583 msgstr "すでに実行中のプロセスが多すぎる。 B<fork>(2) 参照。"
2584
2585 #. type: TP
2586 #: build/C/man2/clone.2:1207
2587 #, no-wrap
2588 msgid "B<EBUSY> (B<clone3>() only)"
2589 msgstr ""
2590
2591 #. type: Plain text
2592 #: build/C/man2/clone.2:1215
2593 msgid ""
2594 "B<CLONE_INTO_CGROUP> was specified in I<cl_args.flags>, but the file "
2595 "descriptor specified in I<cl_args.cgroup> refers to a version 2 cgroup in "
2596 "which a domain controller is enabled."
2597 msgstr ""
2598
2599 #. type: TP
2600 #: build/C/man2/clone.2:1215
2601 #, no-wrap
2602 msgid "B<EEXIST> (B<clone3>() only)"
2603 msgstr ""
2604
2605 #. type: Plain text
2606 #: build/C/man2/clone.2:1220
2607 msgid ""
2608 "One (or more) of the PIDs specified in I<set_tid> already exists in the "
2609 "corresponding PID namespace."
2610 msgstr ""
2611
2612 #. type: TP
2613 #: build/C/man2/clone.2:1220 build/C/man2/clone.2:1229
2614 #: build/C/man2/clone.2:1239 build/C/man2/clone.2:1256
2615 #: build/C/man2/clone.2:1268 build/C/man2/clone.2:1287
2616 #: build/C/man2/clone.2:1296 build/C/man2/clone.2:1314
2617 #: build/C/man2/clone.2:1323 build/C/man2/clone.2:1334
2618 #: build/C/man2/clone.2:1343 build/C/man2/clone.2:1352
2619 #: build/C/man2/clone.2:1361 build/C/man2/clone.2:1370
2620 #: build/C/man2/clone.2:1391 build/C/man2/kcmp.2:267
2621 #: build/C/man2/sched_get_priority_max.2:109
2622 #: build/C/man2/sched_rr_get_interval.2:84 build/C/man2/sched_setaffinity.2:123
2623 #: build/C/man2/sched_setaffinity.2:133 build/C/man2/sched_setattr.2:313
2624 #: build/C/man2/sched_setattr.2:337 build/C/man2/sched_setattr.2:360
2625 #: build/C/man2/sched_setparam.2:97 build/C/man2/sched_setparam.2:104
2626 #: build/C/man2/sched_setscheduler.2:144 build/C/man2/sched_setscheduler.2:151
2627 #: build/C/man2/sched_setscheduler.2:156 build/C/man2/setns.2:257
2628 #: build/C/man2/setns.2:262 build/C/man2/setns.2:266 build/C/man2/setns.2:271
2629 #: build/C/man2/setns.2:275 build/C/man2/setns.2:282 build/C/man2/setns.2:286
2630 #: build/C/man2/unshare.2:292 build/C/man2/unshare.2:296
2631 #: build/C/man2/unshare.2:305 build/C/man2/unshare.2:315
2632 #: build/C/man2/unshare.2:323 build/C/man2/unshare.2:331
2633 #: build/C/man2/unshare.2:339 build/C/man2/unshare.2:347
2634 #, no-wrap
2635 msgid "B<EINVAL>"
2636 msgstr "B<EINVAL>"
2637
2638 #. type: Plain text
2639 #: build/C/man2/clone.2:1229
2640 msgid ""
2641 "Both B<CLONE_SIGHAND> and B<CLONE_CLEAR_SIGHAND> were specified in the "
2642 "I<flags> mask."
2643 msgstr "B<CLONE_SIGHAND> と B<CLONE_CLEAR_SIGHAND> の両方が I<flags> マスクに指定された。"
2644
2645 #.  Precisely: Linux 2.6.0-test6
2646 #. type: Plain text
2647 #: build/C/man2/clone.2:1239
2648 msgid ""
2649 "B<CLONE_SIGHAND> was specified in the I<flags> mask, but B<CLONE_VM> was "
2650 "not.  (Since Linux 2.6.0.)"
2651 msgstr "I<flags> マスクに B<CLONE_SIGHAND> が指定されていたが、 B<CLONE_VM> が指定されていなかった。 (Linux 2.6.0 以降)"
2652
2653 #.  .TP
2654 #.  .B EINVAL
2655 #.  Precisely one of
2656 #.  .B CLONE_DETACHED
2657 #.  and
2658 #.  .B CLONE_THREAD
2659 #.  was specified.
2660 #.  (Since Linux 2.6.0-test6.)
2661 #. type: Plain text
2662 #: build/C/man2/clone.2:1256
2663 msgid ""
2664 "B<CLONE_THREAD> was specified in the I<flags> mask, but B<CLONE_SIGHAND> was "
2665 "not.  (Since Linux 2.5.35.)"
2666 msgstr "I<flags> マスクに B<CLONE_THREAD> が指定されていたが、 B<CLONE_SIGHAND> が指定されていなかった。 (Linux 2.5.35 以降)"
2667
2668 #. type: Plain text
2669 #: build/C/man2/clone.2:1268
2670 msgid ""
2671 "B<CLONE_THREAD> was specified in the I<flags> mask, but the current process "
2672 "previously called B<unshare>(2)  with the B<CLONE_NEWPID> flag or used "
2673 "B<setns>(2)  to reassociate itself with a PID namespace."
2674 msgstr ""
2675
2676 #.  commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71
2677 #. type: Plain text
2678 #: build/C/man2/clone.2:1278
2679 msgid ""
2680 "Both B<CLONE_FS> and B<CLONE_NEWNS> were specified in the I<flags> mask."
2681 msgstr "B<CLONE_FS> と B<CLONE_NEWNS> の両方が I<flags> マスクに指定された。"
2682
2683 #. type: TP
2684 #: build/C/man2/clone.2:1278
2685 #, no-wrap
2686 msgid "B<EINVAL> (since Linux 3.9)"
2687 msgstr "B<EINVAL> (Linux 3.9 以降)"
2688
2689 #. type: Plain text
2690 #: build/C/man2/clone.2:1287
2691 msgid ""
2692 "Both B<CLONE_NEWUSER> and B<CLONE_FS> were specified in the I<flags> mask."
2693 msgstr "B<CLONE_NEWUSER> と B<CLONE_FS> の両方が I<flags> マスクに指定された。"
2694
2695 #. type: Plain text
2696 #: build/C/man2/clone.2:1296
2697 msgid ""
2698 "Both B<CLONE_NEWIPC> and B<CLONE_SYSVSEM> were specified in the I<flags> "
2699 "mask."
2700 msgstr "B<CLONE_NEWIPC> と B<CLONE_SYSVSEM> の両方が I<flags> マスクに指定された。"
2701
2702 #. type: Plain text
2703 #: build/C/man2/clone.2:1309
2704 msgid ""
2705 "One (or both) of B<CLONE_NEWPID> or B<CLONE_NEWUSER> and one (or both) of "
2706 "B<CLONE_THREAD> or B<CLONE_PARENT> were specified in the I<flags> mask."
2707 msgstr "B<CLONE_NEWPID> と B<CLONE_NEWUSER> の一方 (もしくは両方) と、 B<CLONE_THREAD> と B<CLONE_PARENT>  の一方 (もしくは両方) が、 I<flags> マスクに指定された。"
2708
2709 #. type: TP
2710 #: build/C/man2/clone.2:1309
2711 #, no-wrap
2712 msgid "B<EINVAL> (since Linux 2.6.32)"
2713 msgstr "B<EINVAL> (Linux 2.6.32 以降)"
2714
2715 #.  commit 123be07b0b399670a7cc3d82fef0cb4f93ef885c
2716 #. type: Plain text
2717 #: build/C/man2/clone.2:1314
2718 msgid "B<CLONE_PARENT> was specified, and the caller is an init process."
2719 msgstr "B<CLONE_PARENT> が指定されたが、呼び出し元が init プロセスである。"
2720
2721 #. type: Plain text
2722 #: build/C/man2/clone.2:1323
2723 msgid ""
2724 "Returned by the glibc B<clone>()  wrapper function when I<fn> or I<stack> is "
2725 "specified as NULL."
2726 msgstr ""
2727
2728 #. type: Plain text
2729 #: build/C/man2/clone.2:1334
2730 msgid ""
2731 "B<CLONE_NEWIPC> was specified in the I<flags> mask, but the kernel was not "
2732 "configured with the B<CONFIG_SYSVIPC> and B<CONFIG_IPC_NS> options."
2733 msgstr "I<flags> マスクに B<CLONE_NEWIPC> が指定されたが、カーネルでオプション B<CONFIG_SYSVIPC> と B<CONFIG_IPC_NS> が有効になっていなかった。"
2734
2735 #. type: Plain text
2736 #: build/C/man2/clone.2:1343
2737 msgid ""
2738 "B<CLONE_NEWNET> was specified in the I<flags> mask, but the kernel was not "
2739 "configured with the B<CONFIG_NET_NS> option."
2740 msgstr "I<flags> マスクに B<CLONE_NEWNET> が指定されたが、カーネルでオプション B<CONFIG_NET_NS> が有効になっていなかった。"
2741
2742 #. type: Plain text
2743 #: build/C/man2/clone.2:1352
2744 msgid ""
2745 "B<CLONE_NEWPID> was specified in the I<flags> mask, but the kernel was not "
2746 "configured with the B<CONFIG_PID_NS> option."
2747 msgstr "I<flags> マスクに B<CLONE_NEWPID> が指定されたが、カーネルでオプション B<CONFIG_PID_NS> が有効になっていなかった。"
2748
2749 #. type: Plain text
2750 #: build/C/man2/clone.2:1361
2751 msgid ""
2752 "B<CLONE_NEWUSER> was specified in the I<flags> mask, but the kernel was not "
2753 "configured with the B<CONFIG_USER_NS> option."
2754 msgstr "I<flags> マスクに B<CLONE_NEWUSER> が指定されたが、カーネルでオプション B<CONFIG_USER_NS> が有効になっていなかった。"
2755
2756 #. type: Plain text
2757 #: build/C/man2/clone.2:1370
2758 msgid ""
2759 "B<CLONE_NEWUTS> was specified in the I<flags> mask, but the kernel was not "
2760 "configured with the B<CONFIG_UTS_NS> option."
2761 msgstr "I<flags> マスクに B<CLONE_NEWUTS> が指定されたが、カーネルでオプション B<CONFIG_UTS_NS> が有効になっていなかった。"
2762
2763 #. type: Plain text
2764 #: build/C/man2/clone.2:1377
2765 msgid ""
2766 "I<stack> is not aligned to a suitable boundary for this architecture.  For "
2767 "example, on aarch64, I<stack> must be a multiple of 16."
2768 msgstr ""
2769
2770 #. type: TP
2771 #: build/C/man2/clone.2:1377 build/C/man2/clone.2:1407
2772 #: build/C/man2/clone.2:1411
2773 #, no-wrap
2774 msgid "B<EINVAL> (B<clone3>() only)"
2775 msgstr ""
2776
2777 #. type: Plain text
2778 #: build/C/man2/clone.2:1383
2779 msgid "B<CLONE_DETACHED> was specified in the I<flags> mask."
2780 msgstr "B<CLONE_DETACHED> が I<flags> マスクに指定された。"
2781
2782 #. type: TP
2783 #: build/C/man2/clone.2:1383
2784 #, no-wrap
2785 msgid "B<EINVAL> (B<clone>() only)"
2786 msgstr ""
2787
2788 #. type: Plain text
2789 #: build/C/man2/clone.2:1391
2790 msgid ""
2791 "B<CLONE_PIDFD> was specified together with B<CLONE_DETACHED> in the I<flags> "
2792 "mask."
2793 msgstr ""
2794
2795 #. type: Plain text
2796 #: build/C/man2/clone.2:1399
2797 msgid ""
2798 "B<CLONE_PIDFD> was specified together with B<CLONE_THREAD> in the I<flags> "
2799 "mask."
2800 msgstr ""
2801
2802 #. type: TP
2803 #: build/C/man2/clone.2:1399
2804 #, no-wrap
2805 msgid "B<EINVAL >(B<clone>() only)"
2806 msgstr ""
2807
2808 #. type: Plain text
2809 #: build/C/man2/clone.2:1407
2810 msgid ""
2811 "B<CLONE_PIDFD> was specified together with B<CLONE_PARENT_SETTID> in the "
2812 "I<flags> mask."
2813 msgstr ""
2814
2815 #. type: Plain text
2816 #: build/C/man2/clone.2:1411
2817 msgid "I<set_tid_size> is greater than the number of nested PID namespaces."
2818 msgstr ""
2819
2820 #. type: Plain text
2821 #: build/C/man2/clone.2:1416
2822 msgid "One of the PIDs specified in I<set_tid> was an invalid."
2823 msgstr ""
2824
2825 #. type: TP
2826 #: build/C/man2/clone.2:1416
2827 #, no-wrap
2828 msgid "B<EINVAL> (AArch64 only, Linux 4.6 and earlier)"
2829 msgstr ""
2830
2831 #. type: Plain text
2832 #: build/C/man2/clone.2:1420
2833 msgid "I<stack> was not aligned to a 126-bit boundary."
2834 msgstr ""
2835
2836 #. type: TP
2837 #: build/C/man2/clone.2:1420 build/C/man2/setns.2:292
2838 #: build/C/man2/unshare.2:357
2839 #, no-wrap
2840 msgid "B<ENOMEM>"
2841 msgstr "B<ENOMEM>"
2842
2843 #. type: Plain text
2844 #: build/C/man2/clone.2:1425
2845 msgid ""
2846 "Cannot allocate sufficient memory to allocate a task structure for the "
2847 "child, or to copy those parts of the caller's context that need to be copied."
2848 msgstr ""
2849 "子プロセスのために確保すべきタスク構造体や、呼び出し元のコンテキストの 一部を"
2850 "コピーするのに必要なメモリーを十分に割り当てることができない。"
2851
2852 #. type: TP
2853 #: build/C/man2/clone.2:1425 build/C/man2/unshare.2:361
2854 #, no-wrap
2855 msgid "B<ENOSPC> (since Linux 3.7)"
2856 msgstr "B<ENOSPC> (Linux 3.7 以降)"
2857
2858 #.  commit f2302505775fd13ba93f034206f1e2a587017929
2859 #. type: Plain text
2860 #: build/C/man2/clone.2:1435
2861 msgid ""
2862 "B<CLONE_NEWPID> was specified in the I<flags> mask, but the limit on the "
2863 "nesting depth of PID namespaces would have been exceeded; see "
2864 "B<pid_namespaces>(7)."
2865 msgstr "B<CLONE_NEWPID> が I<flags> に指定されたが、 PID 名前空間のネストの深さの上限に達してしまう。 B<pid_namespaces>(7) を参照。"
2866
2867 #. type: TP
2868 #: build/C/man2/clone.2:1435 build/C/man2/unshare.2:369
2869 #, no-wrap
2870 msgid "B<ENOSPC> (since Linux 4.9; beforehand B<EUSERS>)"
2871 msgstr "B<ENOSPC> (Linux 4.9 以降; 以前は B<EUSERS>)"
2872
2873 #. type: Plain text
2874 #: build/C/man2/clone.2:1444
2875 msgid ""
2876 "B<CLONE_NEWUSER> was specified in the I<flags> mask, and the call would "
2877 "cause the limit on the number of nested user namespaces to be exceeded.  See "
2878 "B<user_namespaces>(7)."
2879 msgstr "B<CLONE_NEWUSER> が I<flags> マスクに指定されており、 この呼び出しによりネストされたユーザー名前空間数の上限を超えてしまう。 B<user_namespaces>(7) を参照。"
2880
2881 #. type: Plain text
2882 #: build/C/man2/clone.2:1447 build/C/man2/unshare.2:381
2883 msgid ""
2884 "From Linux 3.11 to Linux 4.8, the error diagnosed in this case was B<EUSERS>."
2885 msgstr ""
2886
2887 #. type: TP
2888 #: build/C/man2/clone.2:1447 build/C/man2/unshare.2:381
2889 #, no-wrap
2890 msgid "B<ENOSPC> (since Linux 4.9)"
2891 msgstr "B<ENOSPC> (Linux 4.9 以降)"
2892
2893 #. type: Plain text
2894 #: build/C/man2/clone.2:1457
2895 msgid ""
2896 "One of the values in the I<flags> mask specified the creation of a new user "
2897 "namespace, but doing so would have caused the limit defined by the "
2898 "corresponding file in I</proc/sys/user> to be exceeded.  For further "
2899 "details, see B<namespaces>(7)."
2900 msgstr ""
2901
2902 #. type: TP
2903 #: build/C/man2/clone.2:1457
2904 #, no-wrap
2905 msgid "B<EOPNOTSUPP> (B<clone3>() only)"
2906 msgstr "B<EOPNOTSUPP> (B<clone3>() のみ)"
2907
2908 #. type: Plain text
2909 #: build/C/man2/clone.2:1467
2910 msgid ""
2911 "B<CLONE_INTO_CGROUP> was specified in I<cl_args.flags>, but the file "
2912 "descriptor specified in I<cl_args.cgroup> refers to a version 2 cgroup that "
2913 "is in the I<domain invalid> state."
2914 msgstr ""
2915
2916 #. type: TP
2917 #: build/C/man2/clone.2:1467 build/C/man2/clone.2:1477
2918 #: build/C/man2/clone.2:1482 build/C/man2/kcmp.2:276
2919 #: build/C/man2/sched_setaffinity.2:140 build/C/man2/sched_setattr.2:376
2920 #: build/C/man2/sched_setattr.2:379 build/C/man2/sched_setparam.2:109
2921 #: build/C/man2/sched_setscheduler.2:162 build/C/man2/setns.2:295
2922 #: build/C/man2/unshare.2:391 build/C/man2/unshare.2:394
2923 #, no-wrap
2924 msgid "B<EPERM>"
2925 msgstr "B<EPERM>"
2926
2927 #. type: Plain text
2928 #: build/C/man2/clone.2:1477
2929 msgid ""
2930 "B<CLONE_NEWCGROUP>, B<CLONE_NEWIPC>, B<CLONE_NEWNET>, B<CLONE_NEWNS>, "
2931 "B<CLONE_NEWPID>, or B<CLONE_NEWUTS> was specified by an unprivileged process "
2932 "(process without B<CAP_SYS_ADMIN>)."
2933 msgstr "非特権プロセス (B<CAP_SYS_ADMIN> を持たないプロセス) が B<CLONE_NEWCGROUP>, B<CLONE_NEWIPC>, B<CLONE_NEWNET>, B<CLONE_NEWNS>, B<CLONE_NEWPID>, B<CLONE_NEWUTS> を指定した。"
2934
2935 #. type: Plain text
2936 #: build/C/man2/clone.2:1482
2937 msgid ""
2938 "B<CLONE_PID> was specified by a process other than process 0.  (This error "
2939 "occurs only on Linux 2.5.15 and earlier.)"
2940 msgstr "PID が 0 以外のプロセスによって B<CLONE_PID> が指定された (このエラーは Linux 2.5.15 以前でのみ発生する)。"
2941
2942 #. type: Plain text
2943 #: build/C/man2/clone.2:1491
2944 msgid ""
2945 "B<CLONE_NEWUSER> was specified in the I<flags> mask, but either the "
2946 "effective user ID or the effective group ID of the caller does not have a "
2947 "mapping in the parent namespace (see B<user_namespaces>(7))."
2948 msgstr "B<CLONE_NEWUSER> が I<flags> マスクに指定されたが、 呼び出し元の実効ユーザー ID もしくは実効グループ ID が親名前空間にマッピングがない (B<user_namespaces>(7) 参照)。"
2949
2950 #. type: TP
2951 #: build/C/man2/clone.2:1491 build/C/man2/unshare.2:402
2952 #, no-wrap
2953 msgid "B<EPERM> (since Linux 3.9)"
2954 msgstr "B<EPERM> (Linux 3.9 以降)"
2955
2956 #.  commit 3151527ee007b73a0ebd296010f1c0454a919c7d
2957 #.  FIXME What is the rationale for this restriction?
2958 #. type: Plain text
2959 #: build/C/man2/clone.2:1501
2960 msgid ""
2961 "B<CLONE_NEWUSER> was specified in the I<flags> mask and the caller is in a "
2962 "chroot environment (i.e., the caller's root directory does not match the "
2963 "root directory of the mount namespace in which it resides)."
2964 msgstr "B<CLONE_NEWUSER> が I<flags> マスクに指定され、 呼び出し元が chroot された環境にいる (すなわち、呼び出し元の root ディレクトリが呼び出し元が属するマウント名前空間の root ディレクトリに一致しない)。"
2965
2966 #. type: TP
2967 #: build/C/man2/clone.2:1501
2968 #, no-wrap
2969 msgid "B<EPERM> (B<clone3>() only)"
2970 msgstr "B<EPERM> (B<clone3>() のみ)"
2971
2972 #. type: Plain text
2973 #: build/C/man2/clone.2:1508
2974 msgid ""
2975 "I<set_tid_size> was greater than zero, and the caller lacks the "
2976 "B<CAP_SYS_ADMIN> capability in one or more of the user namespaces that own "
2977 "the corresponding PID namespaces."
2978 msgstr ""
2979
2980 #. type: TP
2981 #: build/C/man2/clone.2:1508
2982 #, no-wrap
2983 msgid "B<ERESTARTNOINTR> (since Linux 2.6.17)"
2984 msgstr "B<ERESTARTNOINTR> (Linux 2.6.17 以降)"
2985
2986 #.  commit 4a2c7a7837da1b91468e50426066d988050e4d56
2987 #. type: Plain text
2988 #: build/C/man2/clone.2:1513
2989 msgid ""
2990 "System call was interrupted by a signal and will be restarted.  (This can be "
2991 "seen only during a trace.)"
2992 msgstr ""
2993
2994 #. type: TP
2995 #: build/C/man2/clone.2:1513
2996 #, no-wrap
2997 msgid "B<EUSERS> (Linux 3.11 to Linux 4.8)"
2998 msgstr " B<EUSERS> (Linux 3.11 to Linux 4.8)"
2999
3000 #. type: Plain text
3001 #: build/C/man2/clone.2:1523
3002 msgid ""
3003 "B<CLONE_NEWUSER> was specified in the I<flags> mask, and the limit on the "
3004 "number of nested user namespaces would be exceeded.  See the discussion of "
3005 "the B<ENOSPC> error above."
3006 msgstr "B<CLONE_NEWUSER> が I<flags> マスクに指定されており、ネストされたユーザー名前空間の数が上限を超えてしまう。上記の B<ENOSPC> エラーの議論を参照。"
3007
3008 #.  There is no entry for
3009 #.  .BR clone ()
3010 #.  in libc5.
3011 #.  glibc2 provides
3012 #.  .BR clone ()
3013 #.  as described in this manual page.
3014 #. type: Plain text
3015 #: build/C/man2/clone.2:1533
3016 msgid "The B<clone3>()  system call first appeared in Linux 5.3."
3017 msgstr "B<clone3>() システムコールは Linux 5.3 で初めて登場した。"
3018
3019 #. type: Plain text
3020 #: build/C/man2/clone.2:1537
3021 msgid ""
3022 "These system calls are Linux-specific and should not be used in programs "
3023 "intended to be portable."
3024 msgstr "これらのシステムコールは Linux 特有であり、移植を考慮したプログラムでは使用すべき ではない。"
3025
3026 #. type: Plain text
3027 #: build/C/man2/clone.2:1541
3028 msgid ""
3029 "One use of these systems calls is to implement threads: multiple flows of "
3030 "control in a program that run concurrently in a shared address space."
3031 msgstr "これらのシステムコールの使用法のひとつは、スレッドを実装することである。スレッドは、一つのプログラムの中で共有されたアドレス空間で同時並行で実行される複数の制御フローである。"
3032
3033 #. type: Plain text
3034 #: build/C/man2/clone.2:1546
3035 msgid ""
3036 "Glibc does not provide a wrapper for B<clone3>(); call it using "
3037 "B<syscall>(2)."
3038 msgstr "glibc は B<clone3>() に対するラッパー関数を提供していない。 B<syscall>(2) を使って呼び出すこと。"
3039
3040 #. type: Plain text
3041 #: build/C/man2/clone.2:1562
3042 msgid ""
3043 "Note that the glibc B<clone>()  wrapper function makes some changes in the "
3044 "memory pointed to by I<stack> (changes required to set the stack up "
3045 "correctly for the child)  I<before> invoking the B<clone>()  system call.  "
3046 "So, in cases where B<clone>()  is used to recursively create children, do "
3047 "not use the buffer employed for the parent's stack as the stack of the child."
3048 msgstr ""
3049
3050 #. type: Plain text
3051 #: build/C/man2/clone.2:1568
3052 msgid ""
3053 "The B<kcmp>(2)  system call can be used to test whether two processes share "
3054 "various resources such as a file descriptor table, System V semaphore undo "
3055 "operations, or a virtual address space."
3056 msgstr "システムコール B<kcmp>() を使うと、 2つのプロセスが、 ファイルディスクリプター、 System V セマフォーの undo 操作、仮想アドレス空間などの様々なリソースを共有しているかを検査できる。"
3057
3058 #. type: Plain text
3059 #: build/C/man2/clone.2:1572
3060 msgid ""
3061 "Handlers registered using B<pthread_atfork>(3)  are not executed during a "
3062 "clone call."
3063 msgstr ""
3064
3065 #. type: Plain text
3066 #: build/C/man2/clone.2:1582
3067 msgid ""
3068 "In the Linux 2.4.x series, B<CLONE_THREAD> generally does not make the "
3069 "parent of the new thread the same as the parent of the calling process.  "
3070 "However, for kernel versions 2.4.7 to 2.4.18 the B<CLONE_THREAD> flag "
3071 "implied the B<CLONE_PARENT> flag (as in Linux 2.6.0 and later)."
3072 msgstr "Linux 2.4.x 系列では、一般的には B<CLONE_THREAD> フラグを指定しても新しいスレッドの親を 呼び出し元プロセスの親と同じにはしない。 しかし、バージョン 2.4.7〜2.4.18 のカーネルでは、 (カーネル 2.6 以降と同じように) CLONE_THREAD フラグを指定すると、 暗黙のうちに CLONE_PARENT フラグを指定したことになる。"
3073
3074 #. type: Plain text
3075 #: build/C/man2/clone.2:1588
3076 msgid ""
3077 "On i386, B<clone>()  should not be called through vsyscall, but directly "
3078 "through I<int $0x80>."
3079 msgstr ""
3080 "i386 上では、 B<clone>()  は vsyscall 経由ではなく、直接 I<int $0x80> 経由で"
3081 "呼び出すべきである。"
3082
3083 #. type: SS
3084 #: build/C/man2/clone.2:1588 build/C/man2/sched_setaffinity.2:236
3085 #, no-wrap
3086 msgid "C library/kernel differences"
3087 msgstr "C ライブラリとカーネルの違い"
3088
3089 #. type: Plain text
3090 #: build/C/man2/clone.2:1602
3091 msgid ""
3092 "The raw B<clone>()  system call corresponds more closely to B<fork>(2)  in "
3093 "that execution in the child continues from the point of the call.  As such, "
3094 "the I<fn> and I<arg> arguments of the B<clone>()  wrapper function are "
3095 "omitted."
3096 msgstr "素の B<clone> システムコールは、より B<fork>(2) に近いかたちになっており、 子プロセスの実行が呼び出しが行われた場所から続けられる。 そのため、 B<clone>() ラッパー関数の引き数 I<fn> と I<arg> は省略される。"
3097
3098 #. type: Plain text
3099 #: build/C/man2/clone.2:1624
3100 #, fuzzy
3101 #| msgid ""
3102 #| "Another difference for the raw system call is that the I<child_stack> "
3103 #| "argument may be zero, in which case copy-on-write semantics ensure that "
3104 #| "the child gets separate copies of stack pages when either process "
3105 #| "modifies the stack.  In this case, for correct operation, the B<CLONE_VM> "
3106 #| "option should not be specified."
3107 msgid ""
3108 "In contrast to the glibc wrapper, the raw B<clone>()  system call accepts "
3109 "NULL as a I<stack> argument (and B<clone3>()  likewise allows I<cl_args."
3110 "stack> to be NULL).  In this case, the child uses a duplicate of the "
3111 "parent's stack.  (Copy-on-write semantics ensure that the child gets "
3112 "separate copies of stack pages when either process modifies the stack.)  In "
3113 "this case, for correct operation, the B<CLONE_VM> option should not be "
3114 "specified.  (If the child I<shares> the parent's memory because of the use "
3115 "of the B<CLONE_VM> flag, then no copy-on-write duplication occurs and chaos "
3116 "is likely to result.)"
3117 msgstr ""
3118 "生のシステムコールのもう一つの違いは、 I<child_stack> 引き数がゼロでも良いこ"
3119 "とである。この場合には、どちらかのプロセスが スタックを変更した時に、書き込み"
3120 "時コピー (copy-on-write) 方式により 子プロセスがスタックページの独立したコ"
3121 "ピーを得られることが保証される。 この場合、正常に動作させるためには、 "
3122 "B<CLONE_VM> オプションを指定してはならない。"
3123
3124 #. type: Plain text
3125 #: build/C/man2/clone.2:1628
3126 msgid ""
3127 "The order of the arguments also differs in the raw system call, and there "
3128 "are variations in the arguments across architectures, as detailed in the "
3129 "following paragraphs."
3130 msgstr ""
3131
3132 #. type: Plain text
3133 #: build/C/man2/clone.2:1631
3134 msgid ""
3135 "The raw system call interface on x86-64 and some other architectures "
3136 "(including sh, tile, and alpha) is:"
3137 msgstr ""
3138
3139 #. type: Plain text
3140 #: build/C/man2/clone.2:1637
3141 #, no-wrap
3142 msgid ""
3143 "B<long clone(unsigned long >I<flags>B<, void *>I<stack>B<,>\n"
3144 "B<           int *>I<parent_tid>B<, int *>I<child_tid>B<,>\n"
3145 "B<           unsigned long >I<tls>B<);>\n"
3146 msgstr ""
3147 " B<long clone(unsigned long >I<flags>B<, void *>I<stack>B<,>\n"
3148 "B<           int *>I<parent_tid>B<, int *>I<child_tid>B<,>\n"
3149 "B<           unsigned long >I<tls>B<);>\n"
3150
3151 #.  CONFIG_CLONE_BACKWARDS
3152 #. type: Plain text
3153 #: build/C/man2/clone.2:1645
3154 msgid ""
3155 "On x86-32, and several other common architectures (including score, ARM, ARM "
3156 "64, PA-RISC, arc, Power PC, xtensa, and MIPS), the order of the last two "
3157 "arguments is reversed:"
3158 msgstr ""
3159
3160 #. type: Plain text
3161 #: build/C/man2/clone.2:1651
3162 #, no-wrap
3163 msgid ""
3164 "B<long clone(unsigned long >I<flags>B<, void *>I<stack>B<,>\n"
3165 "B<          int *>I<parent_tid>B<, unsigned long >I<tls>B<,>\n"
3166 "B<          int *>I<child_tid>B<);>\n"
3167 msgstr ""
3168 " B<long clone(unsigned long >I<flags>B<, void *>I<stack>B<,>\n"
3169 "B<          int *>I<parent_tid>B<, unsigned long >I<tls>B<,>\n"
3170 "B<          int *>I<child_tid>B<);>\n"
3171
3172 #.  CONFIG_CLONE_BACKWARDS2
3173 #. type: Plain text
3174 #: build/C/man2/clone.2:1657
3175 msgid ""
3176 "On the cris and s390 architectures, the order of the first two arguments is "
3177 "reversed:"
3178 msgstr ""
3179
3180 #. type: Plain text
3181 #: build/C/man2/clone.2:1663
3182 #, no-wrap
3183 msgid ""
3184 "B<long clone(void *>I<stack>B<, unsigned long >I<flags>B<,>\n"
3185 "B<           int *>I<parent_tid>B<, int *>I<child_tid>B<,>\n"
3186 "B<           unsigned long >I<tls>B<);>\n"
3187 msgstr ""
3188 " B<long clone(void *>I<stack>B<, unsigned long >I<flags>B<,>\n"
3189 "B<           int *>I<parent_tid>B<, int *>I<child_tid>B<,>\n"
3190 "B<           unsigned long >I<tls>B<);>\n"
3191
3192 #.  CONFIG_CLONE_BACKWARDS3
3193 #. type: Plain text
3194 #: build/C/man2/clone.2:1669
3195 msgid "On the microblaze architecture, an additional argument is supplied:"
3196 msgstr ""
3197
3198 #. type: Plain text
3199 #: build/C/man2/clone.2:1676
3200 #, no-wrap
3201 msgid ""
3202 "B<long clone(unsigned long >I<flags>B<, void *>I<stack>B<,>\n"
3203 "B<           int >I<stack_size>B<,>         /* Size of stack */\n"
3204 "B<           int *>I<parent_tid>B<, int *>I<child_tid>B<,>\n"
3205 "B<           unsigned long >I<tls>B<);>\n"
3206 msgstr ""
3207 " B<long clone(unsigned long >I<flags>B<, void *>I<stack>B<,>\n"
3208 "B<           int >I<stack_size>B<,>         /* Size of stack */\n"
3209 "B<           int *>I<parent_tid>B<, int *>I<child_tid>B<,>\n"
3210 "B<           unsigned long >I<tls>B<);>\n"
3211
3212 #. type: SS
3213 #: build/C/man2/clone.2:1679
3214 #, no-wrap
3215 msgid "blackfin, m68k, and sparc"
3216 msgstr "blackfin, m68k, sparc"
3217
3218 #.  Mike Frysinger noted in a 2013 mail:
3219 #.      these arches don't define __ARCH_WANT_SYS_CLONE:
3220 #.      blackfin ia64 m68k sparc
3221 #. type: Plain text
3222 #: build/C/man2/clone.2:1686
3223 msgid ""
3224 "The argument-passing conventions on blackfin, m68k, and sparc are different "
3225 "from the descriptions above.  For details, see the kernel (and glibc) source."
3226 msgstr ""
3227 "blackfin, m68k, sparc では引き数渡しの規約が上記の説明とは異なる。 詳細は、"
3228 "カーネル (と glibc) のソースを参照のこと。"
3229
3230 #. type: SS
3231 #: build/C/man2/clone.2:1686
3232 #, no-wrap
3233 msgid "ia64"
3234 msgstr "ia64"
3235
3236 #. type: Plain text
3237 #: build/C/man2/clone.2:1688
3238 msgid "On ia64, a different interface is used:"
3239 msgstr "ia64 では、別のインターフェースが使用される:"
3240
3241 #. type: Plain text
3242 #: build/C/man2/clone.2:1696
3243 #, no-wrap
3244 msgid ""
3245 "B<int __clone2(int (*>I<fn>B<)(void *),>\n"
3246 "B<             void *>I<stack_base>B<, size_t >I<stack_size>B<,>\n"
3247 "B<             int >I<flags>B<, void *>I<arg>B<, ...>\n"
3248 "B<          /* pid_t *>I<parent_tid>B<, struct user_desc *>I<tls>B<,>\n"
3249 "B<             pid_t *>I<child_tid>B< */ );>\n"
3250 msgstr ""
3251 " B<int __clone2(int (*>I<fn>B<)(void *),>\n"
3252 "B<             void *>I<stack_base>B<, size_t >I<stack_size>B<,>\n"
3253 "B<             int >I<flags>B<, void *>I<arg>B<, ...>\n"
3254 "B<          /* pid_t *>I<parent_tid>B<, struct user_desc *>I<tls>B<,>\n"
3255 "B<             pid_t *>I<child_tid>B< */ );>\n"
3256
3257 #. type: Plain text
3258 #: build/C/man2/clone.2:1704
3259 msgid ""
3260 "The prototype shown above is for the glibc wrapper function; for the system "
3261 "call itself, the prototype can be described as follows (it is identical to "
3262 "the B<clone>()  prototype on microblaze):"
3263 msgstr ""
3264
3265 #. type: Plain text
3266 #: build/C/man2/clone.2:1711
3267 #, no-wrap
3268 msgid ""
3269 "B<long clone2(unsigned long >I<flags>B<, void *>I<stack_base>B<,>\n"
3270 "B<            int >I<stack_size>B<,>         /* Size of stack */\n"
3271 "B<            int *>I<parent_tid>B<, int *>I<child_tid>B<,>\n"
3272 "B<            unsigned long >I<tls>B<);>\n"
3273 msgstr ""
3274 " B<long clone2(unsigned long >I<flags>B<, void *>I<stack_base>B<,>\n"
3275 "B<            int >I<stack_size>B<,>         /* Size of stack */\n"
3276 "B<            int *>I<parent_tid>B<, int *>I<child_tid>B<,>\n"
3277 "B<            unsigned long >I<tls>B<);>\n"
3278
3279 #. type: Plain text
3280 #: build/C/man2/clone.2:1724
3281 msgid ""
3282 "B<__clone2>()  operates in the same way as B<clone>(), except that "
3283 "I<stack_base> points to the lowest address of the child's stack area, and "
3284 "I<stack_size> specifies the size of the stack pointed to by I<stack_base>."
3285 msgstr "B<__clone2>() は B<clone>() と同じように動作するが、以下の点が異なる: I<stack_base> は子プロセスのスタックエリアの最小のアドレスを指し、 I<stack_size> は I<stack_base> が指し示すスタックエリアの大きさを示す。"
3286
3287 #. type: SS
3288 #: build/C/man2/clone.2:1724
3289 #, no-wrap
3290 msgid "Linux 2.4 and earlier"
3291 msgstr "Linux 2.4 以前"
3292
3293 #. type: Plain text
3294 #: build/C/man2/clone.2:1732
3295 msgid ""
3296 "In Linux 2.4 and earlier, B<clone>()  does not take arguments I<parent_tid>, "
3297 "I<tls>, and I<child_tid>."
3298 msgstr "Linux 2.4 以前では、 B<clone>()  は引き数 I<parent_tid>, I<tls>, I<child_tid> を取らない。"
3299
3300 #. type: Plain text
3301 #: build/C/man2/clone.2:1763
3302 #, fuzzy
3303 #| msgid ""
3304 #| "Versions of the GNU C library that include the NPTL threading library "
3305 #| "contain a wrapper function for B<getpid>(2)  that performs caching of "
3306 #| "PIDs.  This caching relies on support in the glibc wrapper for "
3307 #| "B<clone>(), but as currently implemented, the cache may not be up to date "
3308 #| "in some circumstances.  In particular, if a signal is delivered to the "
3309 #| "child immediately after the B<clone>()  call, then a call to "
3310 #| "B<getpid>(2)  in a handler for the signal may return the PID of the "
3311 #| "calling process (\"the parent\"), if the clone wrapper has not yet had a "
3312 #| "chance to update the PID cache in the child.  (This discussion ignores "
3313 #| "the case where the child was created using B<CLONE_THREAD>, when "
3314 #| "B<getpid>(2)  I<should> return the same value in the child and in the "
3315 #| "process that called B<clone>(), since the caller and the child are in the "
3316 #| "same thread group.  The stale-cache problem also does not occur if the "
3317 #| "I<flags> argument includes B<CLONE_VM>.)  To get the truth, it may be "
3318 #| "necessary to use code such as the following:"
3319 msgid ""
3320 "GNU C library versions 2.3.4 up to and including 2.24 contained a wrapper "
3321 "function for B<getpid>(2)  that performed caching of PIDs.  This caching "
3322 "relied on support in the glibc wrapper for B<clone>(), but limitations in "
3323 "the implementation meant that the cache was not up to date in some "
3324 "circumstances.  In particular, if a signal was delivered to the child "
3325 "immediately after the B<clone>()  call, then a call to B<getpid>(2)  in a "
3326 "handler for the signal could return the PID of the calling process (\"the "
3327 "parent\"), if the clone wrapper had not yet had a chance to update the PID "
3328 "cache in the child.  (This discussion ignores the case where the child was "
3329 "created using B<CLONE_THREAD>, when B<getpid>(2)  I<should> return the same "
3330 "value in the child and in the process that called B<clone>(), since the "
3331 "caller and the child are in the same thread group.  The stale-cache problem "
3332 "also does not occur if the I<flags> argument includes B<CLONE_VM>.)  To get "
3333 "the truth, it was sometimes necessary to use code such as the following:"
3334 msgstr ""
3335 "NPTL スレッドライブラリを含んでいる GNU C ライブラリのいくつかのバージョン に"
3336 "は、 B<getpid>(2)  のラッパー関数が含まれており、このラッパー関数は PID を"
3337 "キャッシュする。 このキャッシュ処理が正しく動作するためには glibc の "
3338 "B<clone>()  のラッパー関数での助けが必要だが、現状の実装では、 ある状況下にお"
3339 "いてキャッシュが最新とならない可能性がある。 特に、 B<clone>()  の呼び出し直"
3340 "後にシグナルが子プロセスに配送された場合に、 そのシグナルに対するハンドラー内"
3341 "で B<getpid>(2)  を呼び出すと、それまでに clone のラッパー関数が子プロセスの "
3342 "PID キャッシュを 更新する機会が得られていなければ、呼び出し元プロセス (\"親プ"
3343 "ロセス\") の PID が 返される可能性がある。 (この議論では、子プロセスが "
3344 "B<CLONE_THREAD> を使って作成された場合のことは無視している。 子プロセスが "
3345 "B<CLONE_THREAD> を作って作成された場合には、 呼び出し元と子プロセスは同じス"
3346 "レッドグループに属すので、 B<getpid>(2)  は子プロセスと B<clone>()  を呼び出"
3347 "したプロセスで同じ値を返すのが「正しい」。 キャッシュが最新とならない問題 "
3348 "(stale-cache problem) は、 I<flags> に B<CLONE_VM> が含まれている場合にも発生"
3349 "しない。)  本当の値を得るためには、次のようなコードを使う必要があるかもしれな"
3350 "い。"
3351
3352 #. type: Plain text
3353 #: build/C/man2/clone.2:1767
3354 #, no-wrap
3355 msgid "#include E<lt>syscall.hE<gt>\n"
3356 msgstr " #include E<lt>syscall.hE<gt>\n"
3357
3358 #. type: Plain text
3359 #: build/C/man2/clone.2:1769
3360 #, no-wrap
3361 msgid "pid_t mypid;\n"
3362 msgstr " pid_t mypid;\n"
3363
3364 #. type: Plain text
3365 #: build/C/man2/clone.2:1771
3366 #, no-wrap
3367 msgid "mypid = syscall(SYS_getpid);\n"
3368 msgstr " mypid = syscall(SYS_getpid);\n"
3369
3370 #. type: Plain text
3371 #: build/C/man2/clone.2:1780
3372 msgid ""
3373 "Because of the stale-cache problem, as well as other problems noted in "
3374 "B<getpid>(2), the PID caching feature was removed in glibc 2.25."
3375 msgstr ""
3376
3377 #. type: Plain text
3378 #: build/C/man2/clone.2:1790
3379 msgid ""
3380 "The following program demonstrates the use of B<clone>()  to create a child "
3381 "process that executes in a separate UTS namespace.  The child changes the "
3382 "hostname in its UTS namespace.  Both parent and child then display the "
3383 "system hostname, making it possible to see that the hostname differs in the "
3384 "UTS namespaces of the parent and child.  For an example of the use of this "
3385 "program, see B<setns>(2)."
3386 msgstr ""
3387 "以下のプログラムは、 別の UTS 名前空間で動作する子プロセスを B<clone>() を"
3388 "使って作成する例である。 子プロセスは、自分の UTS 名前空間においてホスト名を"
3389 "変更する。 それから、親プロセスと子プロセスの両方でシステムのホスト名を表示"
3390 "し、 親プロセスと子プロセスの UTS 名前空間でホスト名が異なることを確認する。 "
3391 "このプログラムの使用方法については B<setns>(2) を参照。"
3392
3393 #. type: Plain text
3394 #: build/C/man2/clone.2:1797
3395 msgid ""
3396 "Within the sample program, we allocate the memory that is to be used for the "
3397 "child's stack using B<mmap>(2)  rather than B<malloc>(3)  for the following "
3398 "reasons:"
3399 msgstr ""
3400
3401 #. type: Plain text
3402 #: build/C/man2/clone.2:1805
3403 msgid ""
3404 "B<mmap>(2)  allocates a block of memory that starts on a page boundary and "
3405 "is a multiple of the page size.  This is useful if we want to establish a "
3406 "guard page (a page with protection B<PROT_NONE>)  at the end of the stack "
3407 "using B<mprotect>(2)."
3408 msgstr ""
3409
3410 #. type: Plain text
3411 #: build/C/man2/clone.2:1812
3412 msgid ""
3413 "We can specify the B<MAP_STACK> flag to request a mapping that is suitable "
3414 "for a stack.  For the moment, this flag is a no-op on Linux, but it exists "
3415 "and has effect on some other systems, so we should include it for "
3416 "portability."
3417 msgstr ""
3418
3419 #. type: SS
3420 #: build/C/man2/clone.2:1812 build/C/man2/kcmp.2:348
3421 #: build/C/man2/sched_setaffinity.2:355 build/C/man2/setns.2:378
3422 #: build/C/man2/unshare.2:486
3423 #, no-wrap
3424 msgid "Program source"
3425 msgstr "プログラムのソース"
3426
3427 #. type: Plain text
3428 #: build/C/man2/clone.2:1824
3429 #, no-wrap
3430 msgid ""
3431 "#define _GNU_SOURCE\n"
3432 "#include E<lt>sys/wait.hE<gt>\n"
3433 "#include E<lt>sys/utsname.hE<gt>\n"
3434 "#include E<lt>sched.hE<gt>\n"
3435 "#include E<lt>string.hE<gt>\n"
3436 "#include E<lt>stdint.hE<gt>\n"
3437 "#include E<lt>stdio.hE<gt>\n"
3438 "#include E<lt>stdlib.hE<gt>\n"
3439 "#include E<lt>unistd.hE<gt>\n"
3440 "#include E<lt>sys/mman.hE<gt>\n"
3441 msgstr ""
3442 " #define _GNU_SOURCE\n"
3443 "#include E<lt>sys/wait.hE<gt>\n"
3444 "#include E<lt>sys/utsname.hE<gt>\n"
3445 "#include E<lt>sched.hE<gt>\n"
3446 "#include E<lt>string.hE<gt>\n"
3447 "#include E<lt>stdint.hE<gt>\n"
3448 "#include E<lt>stdio.hE<gt>\n"
3449 "#include E<lt>stdlib.hE<gt>\n"
3450 "#include E<lt>unistd.hE<gt>\n"
3451 "#include E<lt>sys/mman.hE<gt>\n"
3452
3453 #. type: Plain text
3454 #: build/C/man2/clone.2:1827 build/C/man2/kcmp.2:364
3455 #: build/C/man2/sched_setaffinity.2:367 build/C/man2/setns.2:389
3456 #: build/C/man2/unshare.2:505
3457 #, no-wrap
3458 msgid ""
3459 "#define errExit(msg)    do { perror(msg); exit(EXIT_FAILURE); \\e\n"
3460 "                        } while (0)\n"
3461 msgstr ""
3462 "#define errExit(msg)    do { perror(msg); exit(EXIT_FAILURE); \\e\n"
3463 "                        } while (0)\n"
3464
3465 #. type: Plain text
3466 #: build/C/man2/clone.2:1832
3467 #, no-wrap
3468 msgid ""
3469 "static int              /* Start function for cloned child */\n"
3470 "childFunc(void *arg)\n"
3471 "{\n"
3472 "    struct utsname uts;\n"
3473 msgstr ""
3474 "static int              /* clone された子プロセスの開始関数 */\n"
3475 "childFunc(void *arg)\n"
3476 "{\n"
3477 "    struct utsname uts;\n"
3478
3479 #. type: Plain text
3480 #: build/C/man2/clone.2:1834
3481 #, no-wrap
3482 msgid "    /* Change hostname in UTS namespace of child */\n"
3483 msgstr "    /* 子プロセスの UTS 名前空間でホスト名を変更する */\n"
3484
3485 #. type: Plain text
3486 #: build/C/man2/clone.2:1837
3487 #, no-wrap
3488 msgid ""
3489 "    if (sethostname(arg, strlen(arg)) == -1)\n"
3490 "        errExit(\"sethostname\");\n"
3491 msgstr ""
3492 "    if (sethostname(arg, strlen(arg)) == -1)\n"
3493 "        errExit(\"sethostname\");\n"
3494
3495 #. type: Plain text
3496 #: build/C/man2/clone.2:1839
3497 #, no-wrap
3498 msgid "    /* Retrieve and display hostname */\n"
3499 msgstr "    /* ホスト名を取得し表示する */\n"
3500
3501 #. type: Plain text
3502 #: build/C/man2/clone.2:1843
3503 #, no-wrap
3504 msgid ""
3505 "    if (uname(&uts) == -1)\n"
3506 "        errExit(\"uname\");\n"
3507 "    printf(\"uts.nodename in child:  %s\\en\", uts.nodename);\n"
3508 msgstr ""
3509 "    if (uname(&uts) == -1)\n"
3510 "        errExit(\"uname\");\n"
3511 "    printf(\"uts.nodename in child:  %s\\en\", uts.nodename);\n"
3512
3513 #. type: Plain text
3514 #: build/C/man2/clone.2:1847
3515 #, no-wrap
3516 msgid ""
3517 "    /* Keep the namespace open for a while, by sleeping.\n"
3518 "       This allows some experimentation--for example, another\n"
3519 "       process might join the namespace. */\n"
3520 msgstr ""
3521 "    /* sleep を使ってしばらく名前空間をオープンされたままにする。\n"
3522 "       これにより実験を行うことができる -- 例えば、\n"
3523 "       別のプロセスがこの名前空間に参加するなど。 */\n"
3524
3525 #. type: Plain text
3526 #: build/C/man2/clone.2:1849
3527 #, no-wrap
3528 msgid "    sleep(200);\n"
3529 msgstr "    sleep(200);\n"
3530
3531 #. type: Plain text
3532 #: build/C/man2/clone.2:1852
3533 #, no-wrap
3534 msgid ""
3535 "    return 0;           /* Child terminates now */\n"
3536 "}\n"
3537 msgstr ""
3538 "    return 0;           /* 子プロセスを終了する */\n"
3539 "}\n"
3540
3541 #. type: Plain text
3542 #: build/C/man2/clone.2:1854
3543 #, no-wrap
3544 msgid "#define STACK_SIZE (1024 * 1024)    /* Stack size for cloned child */\n"
3545 msgstr "#define STACK_SIZE (1024 * 1024)    /* clone される子プロセスのスタックサイズ */\n"
3546
3547 #. type: Plain text
3548 #: build/C/man2/clone.2:1862
3549 #, no-wrap
3550 msgid ""
3551 "int\n"
3552 "main(int argc, char *argv[])\n"
3553 "{\n"
3554 "    char *stack;                    /* Start of stack buffer */\n"
3555 "    char *stackTop;                 /* End of stack buffer */\n"
3556 "    pid_t pid;\n"
3557 "    struct utsname uts;\n"
3558 msgstr ""
3559 "int\n"
3560 "main(int argc, char *argv[])\n"
3561 "{\n"
3562 "    char *stack;                    /* スタックバッファーの先頭 */\n"
3563 "    char *stackTop;                 /* スタックバッファーの末尾 */\n"
3564 "    pid_t pid;\n"
3565 "    struct utsname uts;\n"
3566
3567 #. type: Plain text
3568 #: build/C/man2/clone.2:1867
3569 #, no-wrap
3570 msgid ""
3571 "    if (argc E<lt> 2) {\n"
3572 "        fprintf(stderr, \"Usage: %s E<lt>child-hostnameE<gt>\\en\", argv[0]);\n"
3573 "        exit(EXIT_SUCCESS);\n"
3574 "    }\n"
3575 msgstr ""
3576 "    if (argc E<lt> 2) {\n"
3577 "        fprintf(stderr, \"Usage: %s E<lt>child-hostnameE<gt>\\en\", argv[0]);\n"
3578 "        exit(EXIT_SUCCESS);\n"
3579 "    }\n"
3580
3581 #. type: Plain text
3582 #: build/C/man2/clone.2:1869
3583 #, fuzzy, no-wrap
3584 #| msgid "    /* Allocate stack for child */\n"
3585 msgid "    /* Allocate memory to be used for the stack of the child */\n"
3586 msgstr "    /* 子プロセス用のスタックを割り当てる */\n"
3587
3588 #. type: Plain text
3589 #: build/C/man2/clone.2:1874
3590 #, no-wrap
3591 msgid ""
3592 "    stack = mmap(NULL, STACK_SIZE, PROT_READ | PROT_WRITE,\n"
3593 "                 MAP_PRIVATE | MAP_ANONYMOUS | MAP_STACK, -1, 0);\n"
3594 "    if (stack == MAP_FAILED)\n"
3595 "        errExit(\"mmap\");\n"
3596 msgstr ""
3597 "    stack = mmap(NULL, STACK_SIZE, PROT_READ | PROT_WRITE,\n"
3598 "                 MAP_PRIVATE | MAP_ANONYMOUS | MAP_STACK, -1, 0);\n"
3599 "    if (stack == MAP_FAILED)\n"
3600 "        errExit(\"mmap\");\n"
3601
3602 #. type: Plain text
3603 #: build/C/man2/clone.2:1876
3604 #, no-wrap
3605 msgid "    stackTop = stack + STACK_SIZE;  /* Assume stack grows downward */\n"
3606 msgstr "    stackTop = stack + STACK_SIZE;  /* スタックは下方向に伸びるものとする */\n"
3607
3608 #. type: Plain text
3609 #: build/C/man2/clone.2:1879
3610 #, no-wrap
3611 msgid ""
3612 "    /* Create child that has its own UTS namespace;\n"
3613 "       child commences execution in childFunc() */\n"
3614 msgstr ""
3615 "    /* 自分専用の UTS 名前空間を持つ子プロセスを作成する;\n"
3616 "       子プロセスは childFunc() の実行を開始する */\n"
3617
3618 #. type: Plain text
3619 #: build/C/man2/clone.2:1884
3620 #, no-wrap
3621 msgid ""
3622 "    pid = clone(childFunc, stackTop, CLONE_NEWUTS | SIGCHLD, argv[1]);\n"
3623 "    if (pid == -1)\n"
3624 "        errExit(\"clone\");\n"
3625 "    printf(\"clone() returned %jd\\en\", (intmax_t) pid);\n"
3626 msgstr ""
3627 "     pid = clone(childFunc, stackTop, CLONE_NEWUTS | SIGCHLD, argv[1]);\n"
3628 "    if (pid == -1)\n"
3629 "        errExit(\"clone\");\n"
3630 "    printf(\"clone() returned %jd\\en\", (intmax_t) pid);\n"
3631
3632 #. type: Plain text
3633 #: build/C/man2/clone.2:1886
3634 #, no-wrap
3635 msgid "    /* Parent falls through to here */\n"
3636 msgstr "    /* 親プロセスの実行はここに来る */\n"
3637
3638 #. type: Plain text
3639 #: build/C/man2/clone.2:1888
3640 #, no-wrap
3641 msgid "    sleep(1);           /* Give child time to change its hostname */\n"
3642 msgstr "    sleep(1);           /* 子プロセスがホスト名を変更する時間を与える */\n"
3643
3644 #. type: Plain text
3645 #: build/C/man2/clone.2:1891
3646 #, no-wrap
3647 msgid ""
3648 "    /* Display hostname in parent\\(aqs UTS namespace. This will be\n"
3649 "       different from hostname in child\\(aqs UTS namespace. */\n"
3650 msgstr ""
3651 "    /* 親プロセスの UTS 名前空間でのホスト名を表示する;\n"
3652 "       これは子プロセスの UTS 名前空間でのホスト名とは異なる */\n"
3653
3654 #. type: Plain text
3655 #: build/C/man2/clone.2:1895
3656 #, no-wrap
3657 msgid ""
3658 "    if (uname(&uts) == -1)\n"
3659 "        errExit(\"uname\");\n"
3660 "    printf(\"uts.nodename in parent: %s\\en\", uts.nodename);\n"
3661 msgstr ""
3662 "    if (uname(&uts) == -1)\n"
3663 "        errExit(\"uname\");\n"
3664 "    printf(\"uts.nodename in parent: %s\\en\", uts.nodename);\n"
3665
3666 #. type: Plain text
3667 #: build/C/man2/clone.2:1899
3668 #, no-wrap
3669 msgid ""
3670 "    if (waitpid(pid, NULL, 0) == -1)    /* Wait for child */\n"
3671 "        errExit(\"waitpid\");\n"
3672 "    printf(\"child has terminated\\en\");\n"
3673 msgstr ""
3674 "    if (waitpid(pid, NULL, 0) == -1)    /* 子プロセスを待つ */\n"
3675 "        errExit(\"waitpid\");\n"
3676 "    printf(\"child has terminated\\en\");\n"
3677
3678 #. type: Plain text
3679 #: build/C/man2/clone.2:1902 build/C/man2/kcmp.2:428
3680 #, no-wrap
3681 msgid ""
3682 "    exit(EXIT_SUCCESS);\n"
3683 "}\n"
3684 msgstr ""
3685 "    exit(EXIT_SUCCESS);\n"
3686 "}\n"
3687
3688 #. type: Plain text
3689 #: build/C/man2/clone.2:1920
3690 msgid ""
3691 "B<fork>(2), B<futex>(2), B<getpid>(2), B<gettid>(2), B<kcmp>(2), B<mmap>(2), "
3692 "B<pidfd_open>(2), B<set_thread_area>(2), B<set_tid_address>(2), B<setns>(2), "
3693 "B<tkill>(2), B<unshare>(2), B<wait>(2), B<capabilities>(7), "
3694 "B<namespaces>(7), B<pthreads>(7)"
3695 msgstr " B<fork>(2), B<futex>(2), B<getpid>(2), B<gettid>(2), B<kcmp>(2), B<mmap>(2), B<pidfd_open>(2), B<set_thread_area>(2), B<set_tid_address>(2), B<setns>(2), B<tkill>(2), B<unshare>(2), B<wait>(2), B<capabilities>(7), B<namespaces>(7), B<pthreads>(7)"
3696
3697 #. type: TH
3698 #: build/C/man2/kcmp.2:28
3699 #, no-wrap
3700 msgid "KCMP"
3701 msgstr "KCMP"
3702
3703 #. type: Plain text
3704 #: build/C/man2/kcmp.2:31
3705 msgid ""
3706 "kcmp - compare two processes to determine if they share a kernel resource"
3707 msgstr "kcmp - 二つのプロセスが同じカーネルリソースを共有しているかを比較する"
3708
3709 #. type: Plain text
3710 #: build/C/man2/kcmp.2:34
3711 #, no-wrap
3712 msgid "B<#include E<lt>linux/kcmp.hE<gt>>\n"
3713 msgstr "B<#include E<lt>linux/kcmp.hE<gt>>\n"
3714
3715 #. type: Plain text
3716 #: build/C/man2/kcmp.2:37
3717 #, no-wrap
3718 msgid ""
3719 "B<int kcmp(pid_t >I<pid1>B<, pid_t >I<pid2>B<, int >I<type>B<,>\n"
3720 "B<         unsigned long >I<idx1>B<, unsigned long >I<idx2>B<);>\n"
3721 msgstr ""
3722 "B<int kcmp(pid_t >I<pid1>B<, pid_t >I<pid2>B<, int >I<type>B<,>\n"
3723 "B<         unsigned long >I<idx1>B<, unsigned long >I<idx2>B<);>\n"
3724
3725 #. type: Plain text
3726 #: build/C/man2/kcmp.2:41
3727 msgid "I<Note>: There is no glibc wrapper for this system call; see NOTES."
3728 msgstr ""
3729 "I<注>: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節"
3730 "を参照。"
3731
3732 #. type: Plain text
3733 #: build/C/man2/kcmp.2:50
3734 msgid ""
3735 "The B<kcmp>()  system call can be used to check whether the two processes "
3736 "identified by I<pid1> and I<pid2> share a kernel resource such as virtual "
3737 "memory, file descriptors, and so on."
3738 msgstr ""
3739 "システムコール B<kcmp>() を使うと、 ID が I<pid1> と I<pid2> の二つのプロセス"
3740 "が、 仮想メモリーやファイルディスクリプターなどの、 同じカーネルリソースを共"
3741 "有しているかどうかを検査できる。"
3742
3743 #. type: Plain text
3744 #: build/C/man2/kcmp.2:61
3745 msgid ""
3746 "Permission to employ B<kcmp>()  is governed by ptrace access mode "
3747 "B<PTRACE_MODE_READ_REALCREDS> checks against both I<pid1> and I<pid2>; see "
3748 "B<ptrace>(2)."
3749 msgstr ""
3750
3751 #. type: Plain text
3752 #: build/C/man2/kcmp.2:66
3753 msgid ""
3754 "The I<type> argument specifies which resource is to be compared in the two "
3755 "processes.  It has one of the following values:"
3756 msgstr ""
3757 "I<type> 引き数は 2 つのプロセス間でどのリソースを比較するかを指定する。 以下"
3758 "のいずれかの値を指定する。"
3759
3760 #. type: TP
3761 #: build/C/man2/kcmp.2:66
3762 #, no-wrap
3763 msgid "B<KCMP_FILE>"
3764 msgstr "B<KCMP_FILE>"
3765
3766 #. type: Plain text
3767 #: build/C/man2/kcmp.2:85
3768 #, fuzzy
3769 #| msgid ""
3770 #| "Check whether a file descriptor I<idx1> in the process I<pid1> refers to "
3771 #| "the same open file description (see B<open>(2))  as file descriptor "
3772 #| "I<idx2> in the process I<pid2>."
3773 msgid ""
3774 "Check whether a file descriptor I<idx1> in the process I<pid1> refers to the "
3775 "same open file description (see B<open>(2))  as file descriptor I<idx2> in "
3776 "the process I<pid2>.  The existence of two file descriptors that refer to "
3777 "the same open file description can occur as a result of B<dup>(2)  (and "
3778 "similar)  B<fork>(2), or passing file descriptors via a domain socket (see "
3779 "B<unix>(7))."
3780 msgstr ""
3781 "プロセス I<pid1> のファイルディスクリプター I<idx1> が、 プロセス I<pid2> の"
3782 "ファイルディスクリプター I<idx2> と同じオープンファイル記述 (open file "
3783 "description) を参照しているかを検査する。"
3784
3785 #. type: TP
3786 #: build/C/man2/kcmp.2:85
3787 #, no-wrap
3788 msgid "B<KCMP_FILES>"
3789 msgstr "B<KCMP_FILES>"
3790
3791 #. type: Plain text
3792 #: build/C/man2/kcmp.2:97
3793 #, fuzzy
3794 #| msgid ""
3795 #| "Check whether the process share the same set of open file descriptors.  "
3796 #| "The arguments I<idx1> and I<idx2> are ignored."
3797 msgid ""
3798 "Check whether the processes share the same set of open file descriptors.  "
3799 "The arguments I<idx1> and I<idx2> are ignored.  See the discussion of the "
3800 "B<CLONE_FILES> flag in B<clone>(2)."
3801 msgstr ""
3802 "二つのプロセスが同じオープンファイル記述の集合を共有しているかを検査する。 引"
3803 "き数 I<idx1> と I<idx2> は無視される。"
3804
3805 #. type: TP
3806 #: build/C/man2/kcmp.2:97
3807 #, no-wrap
3808 msgid "B<KCMP_FS>"
3809 msgstr "B<KCMP_FS>"
3810
3811 #. type: Plain text
3812 #: build/C/man2/kcmp.2:110
3813 #, fuzzy
3814 #| msgid ""
3815 #| "Check whether the processes share the same filesystem information (i.e., "
3816 #| "file mode creation mask, working directory, and filesystem root).  The "
3817 #| "arguments I<idx1> and I<idx2> are ignored."
3818 msgid ""
3819 "Check whether the processes share the same filesystem information (i.e., "
3820 "file mode creation mask, working directory, and filesystem root).  The "
3821 "arguments I<idx1> and I<idx2> are ignored.  See the discussion of the "
3822 "B<CLONE_FS> flag in B<clone>(2)."
3823 msgstr ""
3824 "二つのプロセスが同じファイルシステム情報 (すなわち、ファイルのモード作成マス"
3825 "ク、作業ディレクトリ、ファイルシステムのルート) を共有しているかを検査する。 "
3826 "引き数 I<idx1> と I<idx2> は無視される。"
3827
3828 #. type: TP
3829 #: build/C/man2/kcmp.2:110
3830 #, no-wrap
3831 msgid "B<KCMP_IO>"
3832 msgstr "B<KCMP_IO>"
3833
3834 #. type: Plain text
3835 #: build/C/man2/kcmp.2:122
3836 #, fuzzy
3837 #| msgid ""
3838 #| "Check whether the processes share I/O context.  The arguments I<idx1> and "
3839 #| "I<idx2> are ignored."
3840 msgid ""
3841 "Check whether the processes share I/O context.  The arguments I<idx1> and "
3842 "I<idx2> are ignored.  See the discussion of the B<CLONE_IO> flag in "
3843 "B<clone>(2)."
3844 msgstr ""
3845 "二つのプロセスが I/O コンテキストを共有しているかを検査する。 引き数 I<idx1> "
3846 "と I<idx2> は無視される。"
3847
3848 #. type: TP
3849 #: build/C/man2/kcmp.2:122
3850 #, no-wrap
3851 msgid "B<KCMP_SIGHAND>"
3852 msgstr "B<KCMP_SIGHAND>"
3853
3854 #. type: Plain text
3855 #: build/C/man2/kcmp.2:134
3856 #, fuzzy
3857 #| msgid ""
3858 #| "Check whether the processes share the same table of signal dispositions.  "
3859 #| "The arguments I<idx1> and I<idx2> are ignored."
3860 msgid ""
3861 "Check whether the processes share the same table of signal dispositions.  "
3862 "The arguments I<idx1> and I<idx2> are ignored.  See the discussion of the "
3863 "B<CLONE_SIGHAND> flag in B<clone>(2)."
3864 msgstr ""
3865 "二つのプロセスがシグナル配送 (disposition) テーブルを共有しているかを検査す"
3866 "る。 引き数 I<idx1> と I<idx2> は無視される。"
3867
3868 #. type: TP
3869 #: build/C/man2/kcmp.2:134
3870 #, no-wrap
3871 msgid "B<KCMP_SYSVSEM>"
3872 msgstr "B<KCMP_SYSVSEM>"
3873
3874 #. type: Plain text
3875 #: build/C/man2/kcmp.2:147
3876 #, fuzzy
3877 #| msgid ""
3878 #| "Check whether the processes share the same list of System\\ V semaphore "
3879 #| "undo operations.  The arguments I<idx1> and I<idx2> are ignored."
3880 msgid ""
3881 "Check whether the processes share the same list of System\\ V semaphore undo "
3882 "operations.  The arguments I<idx1> and I<idx2> are ignored.  See the "
3883 "discussion of the B<CLONE_SYSVSEM> flag in B<clone>(2)."
3884 msgstr ""
3885 "二つのプロセスが同じ System\\ V セマフォ undo 操作のリストを共有しているかを"
3886 "検査する。 引き数 I<idx1> と I<idx2> は無視される。"
3887
3888 #. type: TP
3889 #: build/C/man2/kcmp.2:147
3890 #, no-wrap
3891 msgid "B<KCMP_VM>"
3892 msgstr "B<KCMP_VM>"
3893
3894 #. type: Plain text
3895 #: build/C/man2/kcmp.2:159
3896 #, fuzzy
3897 #| msgid ""
3898 #| "Check whether the processes share the same address space.  The arguments "
3899 #| "I<idx1> and I<idx2> are ignored."
3900 msgid ""
3901 "Check whether the processes share the same address space.  The arguments "
3902 "I<idx1> and I<idx2> are ignored.  See the discussion of the B<CLONE_VM> flag "
3903 "in B<clone>(2)."
3904 msgstr ""
3905 "二つのプロセスが同じアドレス空間を共有しているかを検査する。 引き数 I<idx1> "
3906 "と I<idx2> は無視される。"
3907
3908 #. type: TP
3909 #: build/C/man2/kcmp.2:159
3910 #, no-wrap
3911 msgid "B<KCMP_EPOLL_TFD> (since Linux 4.13)"
3912 msgstr "B<KCMP_EPOLL_TFD> (Linux 4.13 以降)"
3913
3914 #.  commit 0791e3644e5ef21646fe565b9061788d05ec71d4
3915 #. type: Plain text
3916 #: build/C/man2/kcmp.2:176
3917 msgid ""
3918 "Check whether the file descriptor I<idx1> of the process I<pid1> is present "
3919 "in the B<epoll>(7)  instance described by I<idx2> of the process I<pid2>.  "
3920 "The argument I<idx2> is a pointer to a structure where the target file is "
3921 "described.  This structure has the form:"
3922 msgstr ""
3923
3924 #. type: Plain text
3925 #: build/C/man2/kcmp.2:184
3926 #, no-wrap
3927 msgid ""
3928 "struct kcmp_epoll_slot {\n"
3929 "    __u32 efd;\n"
3930 "    __u32 tfd;\n"
3931 "    __u64 toff;\n"
3932 "};\n"
3933 msgstr ""
3934
3935 #. type: Plain text
3936 #: build/C/man2/kcmp.2:198
3937 msgid ""
3938 "Within this structure, I<efd> is an epoll file descriptor returned from "
3939 "B<epoll_create>(2), I<tfd> is a target file descriptor number, and I<toff> "
3940 "is a target file offset counted from zero.  Several different targets may be "
3941 "registered with the same file descriptor number and setting a specific "
3942 "offset helps to investigate each of them."
3943 msgstr ""
3944
3945 #. type: Plain text
3946 #: build/C/man2/kcmp.2:208
3947 msgid ""
3948 "Note the B<kcmp>()  is not protected against false positives which may occur "
3949 "if the processes are currently running.  One should stop the processes by "
3950 "sending B<SIGSTOP> (see B<signal>(7))  prior to inspection with this system "
3951 "call to obtain meaningful results."
3952 msgstr "B<kcmp>() には、プロセスが現在実行されている場合に起こり得る誤判定 (false positive) に関する保護はない。 ということは、 意味のある結果を得るためには、 このシステムコールで検査を行う前に、 B<SIGSTOP> を送信してプロセスを停止すべきだということだ (B<signal>(7) 参照)。"
3953
3954 #. type: Plain text
3955 #: build/C/man2/kcmp.2:214
3956 msgid ""
3957 "The return value of a successful call to B<kcmp>()  is simply the result of "
3958 "arithmetic comparison of kernel pointers (when the kernel compares "
3959 "resources, it uses their memory addresses)."
3960 msgstr ""
3961 "B<kcmp>() の呼び出しが成功した場合の返り値は、単にカーネルポインターを数値で"
3962 "比較した結果となる (カーネルはリソースを比較する際、リソースのメモリーアドレ"
3963 "スを使用する)。"
3964
3965 #. type: Plain text
3966 #: build/C/man2/kcmp.2:222
3967 msgid ""
3968 "The easiest way to explain is to consider an example.  Suppose that I<v1> "
3969 "and I<v2> are the addresses of appropriate resources, then the return value "
3970 "is one of the following:"
3971 msgstr ""
3972 "これを説明するには、例を見るのが一番簡単である。 I<v1> と I<v2> を適切なリ"
3973 "ソースのアドレスとすると、 返り値は以下のいずれか一つとなる。"
3974
3975 #. type: Plain text
3976 #: build/C/man2/kcmp.2:228
3977 msgid ""
3978 "I<v1> is equal to I<v2>; in other words, the two processes share the "
3979 "resource."
3980 msgstr ""
3981 "I<v1> は I<v2> と等しい。言い換えれば、二つのプロセスはそのリソースを共有して"
3982 "いる。"
3983
3984 #. type: Plain text
3985 #: build/C/man2/kcmp.2:232
3986 msgid "I<v1> is less than I<v2>."
3987 msgstr "I<v1> は I<v2> より小さい。"
3988
3989 #. type: Plain text
3990 #: build/C/man2/kcmp.2:236
3991 msgid "I<v1> is greater than I<v2>."
3992 msgstr "I<v1> は I<v2> より大きい。"
3993
3994 #. type: IP
3995 #: build/C/man2/kcmp.2:236
3996 #, no-wrap
3997 msgid "3"
3998 msgstr "3"
3999
4000 #. type: Plain text
4001 #: build/C/man2/kcmp.2:241
4002 msgid "I<v1> is not equal to I<v2>, but ordering information is unavailable."
4003 msgstr "I<v1> は I<v2> と等しくないが、順序情報がない。"
4004
4005 #. type: Plain text
4006 #: build/C/man2/kcmp.2:246
4007 msgid "On error, -1 is returned, and I<errno> is set appropriately."
4008 msgstr "エラーの場合は -1 が返され、 I<errno> が適切に設定される。"
4009
4010 #. type: Plain text
4011 #: build/C/man2/kcmp.2:251
4012 msgid ""
4013 "B<kcmp>()  was designed to return values suitable for sorting.  This is "
4014 "particularly handy if one needs to compare a large number of file "
4015 "descriptors."
4016 msgstr ""
4017 "B<kcmp>() は、ソートに適した値を返すように設計された。 大量のファイルディスク"
4018 "リプターを比較する必要がある場合に、特に役に立つ。"
4019
4020 #. type: TP
4021 #: build/C/man2/kcmp.2:252 build/C/man2/setns.2:253
4022 #, no-wrap
4023 msgid "B<EBADF>"
4024 msgstr "B<EBADF>"
4025
4026 #. type: Plain text
4027 #: build/C/man2/kcmp.2:262
4028 msgid ""
4029 "I<type> is B<KCMP_FILE> and I<fd1> or I<fd2> is not an open file descriptor."
4030 msgstr ""
4031 "I<type> が B<KCMP_FILE> で、かつ I<fd1> か I<fd2> がオープンファイル記述でな"
4032 "い。"
4033
4034 #. type: TP
4035 #: build/C/man2/kcmp.2:262 build/C/man2/sched_rr_get_interval.2:81
4036 #: build/C/man2/sched_setaffinity.2:120
4037 #, no-wrap
4038 msgid "B<EFAULT>"
4039 msgstr "B<EFAULT>"
4040
4041 #. type: Plain text
4042 #: build/C/man2/kcmp.2:267
4043 msgid ""
4044 "The epoll slot addressed by I<idx2> is outside of the user's address space."
4045 msgstr ""
4046
4047 #. type: Plain text
4048 #: build/C/man2/kcmp.2:271
4049 msgid "I<type> is invalid."
4050 msgstr "I<type> が無効である。"
4051
4052 #. type: TP
4053 #: build/C/man2/kcmp.2:271
4054 #, no-wrap
4055 msgid "B<ENOENT>"
4056 msgstr " B<ENOENT>"
4057
4058 #. type: Plain text
4059 #: build/C/man2/kcmp.2:276
4060 msgid "The target file is not present in B<epoll>(7)  instance."
4061 msgstr ""
4062
4063 #. type: Plain text
4064 #: build/C/man2/kcmp.2:291
4065 #, fuzzy
4066 #| msgid ""
4067 #| "Insufficient permission to inspect process resources.  The "
4068 #| "B<CAP_SYS_PTRACE> capability is required to inspect processes that you do "
4069 #| "not own."
4070 msgid ""
4071 "Insufficient permission to inspect process resources.  The B<CAP_SYS_PTRACE> "
4072 "capability is required to inspect processes that you do not own.  Other "
4073 "ptrace limitations may also apply, such as B<CONFIG_SECURITY_YAMA>, which, "
4074 "when I</proc/sys/kernel/yama/ptrace_scope> is 2, limits B<kcmp>()  to child "
4075 "processes; see B<ptrace>(2)."
4076 msgstr ""
4077 "プロセスのリソースを検査するのに十分な許可がない。 自分が所有していないプロセ"
4078 "スを検査するためには B<CAP_SYS_PTRACE> ケーパビリティが必要である。"
4079
4080 #. type: TP
4081 #: build/C/man2/kcmp.2:291 build/C/man2/sched_rr_get_interval.2:90
4082 #: build/C/man2/sched_setaffinity.2:151 build/C/man2/sched_setattr.2:321
4083 #: build/C/man2/sched_setparam.2:116 build/C/man2/sched_setscheduler.2:165
4084 #: build/C/man2/setns.2:299
4085 #, no-wrap
4086 msgid "B<ESRCH>"
4087 msgstr "B<ESRCH>"
4088
4089 #. type: Plain text
4090 #: build/C/man2/kcmp.2:298
4091 msgid "Process I<pid1> or I<pid2> does not exist."
4092 msgstr "プロセス I<pid1> か I<pid2> が存在しない。"
4093
4094 #. type: Plain text
4095 #: build/C/man2/kcmp.2:302
4096 msgid "The B<kcmp>()  system call first appeared in Linux 3.5."
4097 msgstr "B<kcmp>() システムコールは Linux 3.5 で初めて登場した。"
4098
4099 #. type: Plain text
4100 #: build/C/man2/kcmp.2:305
4101 msgid ""
4102 "B<kcmp>()  is Linux-specific and should not be used in programs intended to "
4103 "be portable."
4104 msgstr ""
4105 "B<kcmp>() は Linux 特有であり、 移植を考慮したプログラムでは使用すべきではな"
4106 "い。"
4107
4108 #. type: Plain text
4109 #: build/C/man2/kcmp.2:308
4110 msgid ""
4111 "Glibc does not provide a wrapper for this system call; call it using "
4112 "B<syscall>(2)."
4113 msgstr ""
4114 "glibc はこのシステムコールに対するラッパー関数を提供していない。 "
4115 "B<syscall>(2) を使って呼び出すこと。"
4116
4117 #. type: Plain text
4118 #: build/C/man2/kcmp.2:317
4119 msgid ""
4120 "This system call is available only if the kernel was configured with "
4121 "B<CONFIG_CHECKPOINT_RESTORE>.  The main use of the system call is for the "
4122 "checkpoint/restore in user space (CRIU) feature.  The alternative to this "
4123 "system call would have been to expose suitable process information via the "
4124 "B<proc>(5)  filesystem; this was deemed to be unsuitable for security "
4125 "reasons."
4126 msgstr ""
4127 "このシステムコールが利用できるのは、 カーネルの B<CONFIG_CHECKPOINT_RESTORE> "
4128 "オプションが有効になっている場合だけである。 このシステムコールの主な用途"
4129 "は、 ユーザー空間でのチェックポイント/リストア (checkpoint/restore in user "
4130 "space; CRIU) 機能である。 このシステムコールを使わないとすると、 B<proc>(5) "
4131 "ファイルシステム経由で必要なプロセス情報を公開することになるが、 これはセキュ"
4132 "リティ上の理由から不適切とみなされた。"
4133
4134 #. type: Plain text
4135 #: build/C/man2/kcmp.2:322
4136 msgid ""
4137 "See B<clone>(2)  for some background information on the shared resources "
4138 "referred to on this page."
4139 msgstr ""
4140 "このページで参照されている共有リソースに関する背景についての情報は "
4141 "B<clone>(2) を参照のこと。"
4142
4143 #. type: Plain text
4144 #: build/C/man2/kcmp.2:330
4145 msgid ""
4146 "The program below uses B<kcmp>()  to test whether pairs of file descriptors "
4147 "refer to the same open file description.  The program tests different cases "
4148 "for the file descriptor pairs, as described in the program output.  An "
4149 "example run of the program is as follows:"
4150 msgstr ""
4151
4152 #. type: Plain text
4153 #: build/C/man2/kcmp.2:336
4154 #, no-wrap
4155 msgid ""
4156 "$ B<./a.out>\n"
4157 "Parent PID is 1144\n"
4158 "Parent opened file on FD 3\n"
4159 msgstr ""
4160
4161 #. type: Plain text
4162 #: build/C/man2/kcmp.2:346
4163 #, no-wrap
4164 msgid ""
4165 "PID of child of fork() is 1145\n"
4166 "\tCompare duplicate FDs from different processes:\n"
4167 "\t\tkcmp(1145, 1144, KCMP_FILE, 3, 3) ==E<gt> same\n"
4168 "Child opened file on FD 4\n"
4169 "\tCompare FDs from distinct open()s in same process:\n"
4170 "\t\tkcmp(1145, 1145, KCMP_FILE, 3, 4) ==E<gt> different\n"
4171 "Child duplicated FD 3 to create FD 5\n"
4172 "\tCompare duplicated FDs in same process:\n"
4173 "\t\tkcmp(1145, 1145, KCMP_FILE, 3, 5) ==E<gt> same\n"
4174 msgstr ""
4175
4176 #. type: Plain text
4177 #: build/C/man2/kcmp.2:361
4178 #, no-wrap
4179 msgid ""
4180 "#define _GNU_SOURCE\n"
4181 "#include E<lt>sys/syscall.hE<gt>\n"
4182 "#include E<lt>sys/wait.hE<gt>\n"
4183 "#include E<lt>sys/stat.hE<gt>\n"
4184 "#include E<lt>stdint.hE<gt>\n"
4185 "#include E<lt>stdlib.hE<gt>\n"
4186 "#include E<lt>stdio.hE<gt>\n"
4187 "#include E<lt>unistd.hE<gt>\n"
4188 "#include E<lt>fcntl.hE<gt>\n"
4189 "#include E<lt>linux/kcmp.hE<gt>\n"
4190 msgstr ""
4191 " #define _GNU_SOURCE\n"
4192 "#include E<lt>sys/syscall.hE<gt>\n"
4193 "#include E<lt>sys/wait.hE<gt>\n"
4194 "#include E<lt>sys/stat.hE<gt>\n"
4195 "#include E<lt>stdint.hE<gt>\n"
4196 "#include E<lt>stdlib.hE<gt>\n"
4197 "#include E<lt>stdio.hE<gt>\n"
4198 "#include E<lt>unistd.hE<gt>\n"
4199 "#include E<lt>fcntl.hE<gt>\n"
4200 "#include E<lt>linux/kcmp.hE<gt>\n"
4201
4202 #. type: Plain text
4203 #: build/C/man2/kcmp.2:371
4204 #, no-wrap
4205 msgid ""
4206 "static int\n"
4207 "kcmp(pid_t pid1, pid_t pid2, int type,\n"
4208 "     unsigned long idx1, unsigned long idx2)\n"
4209 "{\n"
4210 "    return syscall(SYS_kcmp, pid1, pid2, type, idx1, idx2);\n"
4211 "}\n"
4212 msgstr ""
4213 " static int\n"
4214 "kcmp(pid_t pid1, pid_t pid2, int type,\n"
4215 "     unsigned long idx1, unsigned long idx2)\n"
4216 "{\n"
4217 "    return syscall(SYS_kcmp, pid1, pid2, type, idx1, idx2);\n"
4218 "}\n"
4219
4220 #. type: Plain text
4221 #: build/C/man2/kcmp.2:381
4222 #, no-wrap
4223 msgid ""
4224 "static void\n"
4225 "test_kcmp(char *msg, pid_t pid1, pid_t pid2, int fd_a, int fd_b)\n"
4226 "{\n"
4227 "    printf(\"\\et%s\\en\", msg);\n"
4228 "    printf(\"\\et\\etkcmp(%jd, %jd, KCMP_FILE, %d, %d) ==E<gt> %s\\en\",\n"
4229 "            (intmax_t) pid1, (intmax_t) pid2, fd_a, fd_b,\n"
4230 "            (kcmp(pid1, pid2, KCMP_FILE, fd_a, fd_b) == 0) ?\n"
4231 "                        \"same\" : \"different\");\n"
4232 "}\n"
4233 msgstr ""
4234
4235 #. type: Plain text
4236 #: build/C/man2/kcmp.2:387
4237 #, no-wrap
4238 msgid ""
4239 "int\n"
4240 "main(int argc, char *argv[])\n"
4241 "{\n"
4242 "    int fd1, fd2, fd3;\n"
4243 "    char pathname[] = \"/tmp/kcmp.test\";\n"
4244 msgstr ""
4245 " int\n"
4246 "main(int argc, char *argv[])\n"
4247 "{\n"
4248 "    int fd1, fd2, fd3;\n"
4249 "    char pathname[] = \"/tmp/kcmp.test\";\n"
4250
4251 #. type: Plain text
4252 #: build/C/man2/kcmp.2:391
4253 #, no-wrap
4254 msgid ""
4255 "    fd1 = open(pathname, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);\n"
4256 "    if (fd1 == -1)\n"
4257 "        errExit(\"open\");\n"
4258 msgstr ""
4259 "     fd1 = open(pathname, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);\n"
4260 "    if (fd1 == -1)\n"
4261 "        errExit(\"open\");\n"
4262
4263 #. type: Plain text
4264 #: build/C/man2/kcmp.2:394
4265 #, no-wrap
4266 msgid ""
4267 "    printf(\"Parent PID is %jd\\en\", (intmax_t) getpid());\n"
4268 "    printf(\"Parent opened file on FD %d\\en\\en\", fd1);\n"
4269 msgstr ""
4270
4271 #. type: Plain text
4272 #: build/C/man2/kcmp.2:398
4273 #, no-wrap
4274 msgid ""
4275 "    switch (fork()) {\n"
4276 "    case -1:\n"
4277 "        errExit(\"fork\");\n"
4278 msgstr ""
4279 "     switch (fork()) {\n"
4280 "    case -1:\n"
4281 "        errExit(\"fork\");\n"
4282
4283 #. type: Plain text
4284 #: build/C/man2/kcmp.2:401
4285 #, no-wrap
4286 msgid ""
4287 "    case 0:\n"
4288 "        printf(\"PID of child of fork() is %jd\\en\", (intmax_t) getpid());\n"
4289 msgstr ""
4290
4291 #. type: Plain text
4292 #: build/C/man2/kcmp.2:404
4293 #, no-wrap
4294 msgid ""
4295 "        test_kcmp(\"Compare duplicate FDs from different processes:\",\n"
4296 "                getpid(), getppid(), fd1, fd1);\n"
4297 msgstr ""
4298
4299 #. type: Plain text
4300 #: build/C/man2/kcmp.2:409
4301 #, no-wrap
4302 msgid ""
4303 "        fd2 = open(pathname, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);\n"
4304 "        if (fd2 == -1)\n"
4305 "            errExit(\"open\");\n"
4306 "        printf(\"Child opened file on FD %d\\en\", fd2);\n"
4307 msgstr ""
4308 "         fd2 = open(pathname, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);\n"
4309 "        if (fd2 == -1)\n"
4310 "            errExit(\"open\");\n"
4311 "        printf(\"Child opened file on FD %d\\en\", fd2);\n"
4312
4313 #. type: Plain text
4314 #: build/C/man2/kcmp.2:412
4315 #, no-wrap
4316 msgid ""
4317 "        test_kcmp(\"Compare FDs from distinct open()s in same process:\",\n"
4318 "                getpid(), getpid(), fd1, fd2);\n"
4319 msgstr ""
4320
4321 #. type: Plain text
4322 #: build/C/man2/kcmp.2:417
4323 #, no-wrap
4324 msgid ""
4325 "        fd3 = dup(fd1);\n"
4326 "        if (fd3 == -1)\n"
4327 "            errExit(\"dup\");\n"
4328 "        printf(\"Child duplicated FD %d to create FD %d\\en\", fd1, fd3);\n"
4329 msgstr ""
4330
4331 #. type: Plain text
4332 #: build/C/man2/kcmp.2:421
4333 #, no-wrap
4334 msgid ""
4335 "        test_kcmp(\"Compare duplicated FDs in same process:\",\n"
4336 "                getpid(), getpid(), fd1, fd3);\n"
4337 "        break;\n"
4338 msgstr ""
4339
4340 #. type: Plain text
4341 #: build/C/man2/kcmp.2:425
4342 #, no-wrap
4343 msgid ""
4344 "    default:\n"
4345 "        wait(NULL);\n"
4346 "    }\n"
4347 msgstr ""
4348
4349 #. type: Plain text
4350 #: build/C/man2/kcmp.2:432
4351 msgid "B<clone>(2), B<unshare>(2)"
4352 msgstr "B<clone>(2), B<unshare>(2)"
4353
4354 #. type: TH
4355 #: build/C/man2/sched_get_priority_max.2:29
4356 #, no-wrap
4357 msgid "SCHED_GET_PRIORITY_MAX"
4358 msgstr "SCHED_GET_PRIORITY_MAX"
4359
4360 #. type: TH
4361 #: build/C/man2/sched_get_priority_max.2:29 build/C/man3/sched_getcpu.3:26
4362 #: build/C/man2/sched_rr_get_interval.2:29 build/C/man2/sched_setscheduler.2:26
4363 #: build/C/man2/sched_yield.2:29
4364 #, no-wrap
4365 msgid "2017-09-15"
4366 msgstr " 2017-09-15"
4367
4368 #. type: Plain text
4369 #: build/C/man2/sched_get_priority_max.2:32
4370 msgid ""
4371 "sched_get_priority_max, sched_get_priority_min - get static priority range"
4372 msgstr ""
4373 "sched_get_priority_max, sched_get_priority_min - 静的プライオリティの範囲を取"
4374 "得する"
4375
4376 #. type: Plain text
4377 #: build/C/man2/sched_get_priority_max.2:34
4378 #: build/C/man2/sched_rr_get_interval.2:34 build/C/man2/sched_yield.2:34
4379 msgid "B<#include E<lt>sched.hE<gt>>"
4380 msgstr "B<#include E<lt>sched.hE<gt>>"
4381
4382 #. type: Plain text
4383 #: build/C/man2/sched_get_priority_max.2:36
4384 msgid "B<int sched_get_priority_max(int >I<policy>B<);>"
4385 msgstr "B<int sched_get_priority_max(int >I<policy>B<);>"
4386
4387 #. type: Plain text
4388 #: build/C/man2/sched_get_priority_max.2:38
4389 msgid "B<int sched_get_priority_min(int >I<policy>B<);>"
4390 msgstr "B<int sched_get_priority_min(int >I<policy>B<);>"
4391
4392 #. type: Plain text
4393 #: build/C/man2/sched_get_priority_max.2:59
4394 msgid ""
4395 "B<sched_get_priority_max>()  returns the maximum priority value that can be "
4396 "used with the scheduling algorithm identified by I<policy>.  "
4397 "B<sched_get_priority_min>()  returns the minimum priority value that can be "
4398 "used with the scheduling algorithm identified by I<policy>.  Supported "
4399 "I<policy> values are B<SCHED_FIFO>, B<SCHED_RR>, B<SCHED_OTHER>, "
4400 "B<SCHED_BATCH>, B<SCHED_IDLE>, and B<SCHED_DEADLINE>.  Further details about "
4401 "these policies can be found in B<sched>(7)."
4402 msgstr ""
4403 "B<sched_get_priority_max>()  はI<policy> によって指定されたスケジューリングの"
4404 "アルゴリズムで 使用されるプライオリティの最大値を返す。 "
4405 "B<sched_get_priority_min>()  はI<policy> によって指定されたスケジューリングの"
4406 "アルゴリズムで 使用されるプライオリティの最小値を返す。 サポートされる "
4407 "I<policy> の値は B<SCHED_FIFO>、 B<SCHED_RR>、 B<SCHED_OTHER>、 "
4408 "B<SCHED_BATCH>, B<SCHED_IDLE>, B<SCHED_DEADLINE> である。これらのスケジューリ"
4409 "ング方針に関する詳細は B<sched>(7)  に書かれている。"
4410
4411 #. type: Plain text
4412 #: build/C/man2/sched_get_priority_max.2:68
4413 msgid ""
4414 "Processes with numerically higher priority values are scheduled before "
4415 "processes with numerically lower priority values.  Thus, the value returned "
4416 "by B<sched_get_priority_max>()  will be greater than the value returned by "
4417 "B<sched_get_priority_min>()."
4418 msgstr ""
4419 "数値的に大きなプライオリティ値を持つプロセスは小さな プライオリティ値を持つプ"
4420 "ロセスより前にスケジュールされる。 このため B<sched_get_priority_max>()  が返"
4421 "す値は B<sched_get_priority_min>()  が返す値よりも大きい。"
4422
4423 #. type: Plain text
4424 #: build/C/man2/sched_get_priority_max.2:76
4425 msgid ""
4426 "Linux allows the static priority range 1 to 99 for the B<SCHED_FIFO> and "
4427 "B<SCHED_RR> policies, and the priority 0 for the remaining policies.  "
4428 "Scheduling priority ranges for the various policies are not alterable."
4429 msgstr ""
4430 "Linux では、 ポリシー B<SCHED_FIFO> と B<SCHED_RR> では 1 から 99 の範囲の静"
4431 "的プライオリティーを持ち、それ以外のポリシーでは プライオリティとして 0 を持"
4432 "つ。 それぞれの方針のスケジューリングプライオリティの範囲は 変更することがで"
4433 "きない。"
4434
4435 #.  POSIX.1-2001, POSIX.1-2008 (XBD 2.8.4)
4436 #. type: Plain text
4437 #: build/C/man2/sched_get_priority_max.2:89
4438 msgid ""
4439 "The range of scheduling priorities may vary on other POSIX systems, thus it "
4440 "is a good idea for portable applications to use a virtual priority range and "
4441 "map it to the interval given by B<sched_get_priority_max>()  and "
4442 "B<sched_get_priority_min> POSIX.1 requires a spread of at least 32 between "
4443 "the maximum and the minimum values for B<SCHED_FIFO> and B<SCHED_RR>."
4444 msgstr "スケジューリングプライオリティの範囲は他の POSIX システムと 異なっているかもしれない。それで、移植性(portable)のある アプリケーションでは仮想的な範囲を用い B<sched_get_priority_max>()  と B<sched_get_priority_min> で与えられた間隔にマップして使用することはいい考えである。 POSIX.1 では B<SCHED_FIFO> と B<SCHED_RR> における 最大値と最小値の間隔を少なくとも 32 にすることを要求している。"
4445
4446 #. type: Plain text
4447 #: build/C/man2/sched_get_priority_max.2:98
4448 msgid ""
4449 "POSIX systems on which B<sched_get_priority_max>()  and "
4450 "B<sched_get_priority_min>()  are available define "
4451 "B<_POSIX_PRIORITY_SCHEDULING> in I<E<lt>unistd.hE<gt>>."
4452 msgstr ""
4453 "POSIX システムでは B<sched_get_priority_max>()  と "
4454 "B<sched_get_priority_min>()  は I<E<lt>unistd.hE<gt>> に "
4455 "B<_POSIX_PRIORITY_SCHEDULING> が定義されている場合にのみ使用可能である。"
4456
4457 #. type: Plain text
4458 #: build/C/man2/sched_get_priority_max.2:108
4459 msgid ""
4460 "On success, B<sched_get_priority_max>()  and B<sched_get_priority_min>()  "
4461 "return the maximum/minimum priority value for the named scheduling policy.  "
4462 "On error, -1 is returned, and I<errno> is set appropriately."
4463 msgstr ""
4464 "成功した場合は B<sched_get_priority_max>()  と B<sched_get_priority_min>()  "
4465 "は指定されたスケジューリング方針のプライオリティの最大値/最小値を返す。 エ"
4466 "ラーの場合は -1 が返され、 I<errno> が適切に設定される。"
4467
4468 #. type: Plain text
4469 #: build/C/man2/sched_get_priority_max.2:114
4470 msgid "The argument I<policy> does not identify a defined scheduling policy."
4471 msgstr "引き数 I<policy> が定義されているスケジューリング方針と一致しない。"
4472
4473 #. type: Plain text
4474 #: build/C/man2/sched_get_priority_max.2:116
4475 #: build/C/man2/sched_rr_get_interval.2:96 build/C/man2/sched_setparam.2:121
4476 #: build/C/man2/sched_yield.2:54
4477 msgid "POSIX.1-2001, POSIX.1-2008."
4478 msgstr " POSIX.1-2001, POSIX.1-2008."
4479
4480 #. type: Plain text
4481 #: build/C/man2/sched_get_priority_max.2:126
4482 msgid ""
4483 "B<sched_getaffinity>(2), B<sched_getparam>(2), B<sched_getscheduler>(2), "
4484 "B<sched_setaffinity>(2), B<sched_setparam>(2), B<sched_setscheduler>(2), "
4485 "B<sched>(7)"
4486 msgstr ""
4487 "B<sched_getaffinity>(2), B<sched_getparam>(2), B<sched_getscheduler>(2), "
4488 "B<sched_setaffinity>(2), B<sched_setparam>(2), B<sched_setscheduler>(2), "
4489 "B<sched>(7)"
4490
4491 #. type: TH
4492 #: build/C/man3/sched_getcpu.3:26
4493 #, no-wrap
4494 msgid "SCHED_GETCPU"
4495 msgstr "SCHED_GETCPU"
4496
4497 #. type: Plain text
4498 #: build/C/man3/sched_getcpu.3:29
4499 msgid "sched_getcpu - determine CPU on which the calling thread is running"
4500 msgstr "sched_getcpu - 呼び出したスレッドが実行されている CPU を知る"
4501
4502 #. type: Plain text
4503 #: build/C/man3/sched_getcpu.3:32 build/C/man2/sched_setattr.2:33
4504 #: build/C/man2/sched_setparam.2:36 build/C/man2/sched_setscheduler.2:33
4505 #, no-wrap
4506 msgid "B<#include E<lt>sched.hE<gt>>\n"
4507 msgstr "B<#include E<lt>sched.hE<gt>>\n"
4508
4509 #. type: Plain text
4510 #: build/C/man3/sched_getcpu.3:34
4511 #, no-wrap
4512 msgid "B<int sched_getcpu(void);>\n"
4513 msgstr "B<int sched_getcpu(void);>\n"
4514
4515 #. type: Plain text
4516 #: build/C/man3/sched_getcpu.3:39
4517 msgid ""
4518 "Feature Test Macro Requirements for glibc (see B<feature_test_macros>(7)):"
4519 msgstr "glibc 向けの機能検査マクロの要件 (B<feature_test_macros>(7)  参照):"
4520
4521 #. type: Plain text
4522 #: build/C/man3/sched_getcpu.3:42
4523 msgid "B<sched_getcpu>():"
4524 msgstr "B<sched_getcpu>():"
4525
4526 #. type: TP
4527 #: build/C/man3/sched_getcpu.3:45
4528 #, no-wrap
4529 msgid "Since glibc 2.14:"
4530 msgstr "glibc 2.14 以降:"
4531
4532 #. type: Plain text
4533 #: build/C/man3/sched_getcpu.3:48
4534 msgid "_GNU_SOURCE"
4535 msgstr "_GNU_SOURCE"
4536
4537 #. type: TP
4538 #: build/C/man3/sched_getcpu.3:48
4539 #, no-wrap
4540 msgid "Before glibc 2.14:"
4541 msgstr "glibc 2.14 より前:"
4542
4543 #. type: Plain text
4544 #: build/C/man3/sched_getcpu.3:52
4545 #, no-wrap
4546 msgid ""
4547 "_BSD_SOURCE || _SVID_SOURCE\n"
4548 "    /* _GNU_SOURCE also suffices */\n"
4549 msgstr ""
4550 "_BSD_SOURCE || _SVID_SOURCE\n"
4551 "    /* _GNU_SOURCE も定義される */\n"
4552
4553 #. type: Plain text
4554 #: build/C/man3/sched_getcpu.3:58
4555 msgid ""
4556 "B<sched_getcpu>()  returns the number of the CPU on which the calling thread "
4557 "is currently executing."
4558 msgstr ""
4559 "B<sched_getcpu>()  は、呼び出したスレッドが現在実行されている CPU の番号を返"
4560 "す。"
4561
4562 #. type: Plain text
4563 #: build/C/man3/sched_getcpu.3:65
4564 msgid ""
4565 "On success, B<sched_getcpu>()  returns a nonnegative CPU number.  On error, "
4566 "-1 is returned and I<errno> is set to indicate the error."
4567 msgstr ""
4568 "成功すると、 B<sched_getcpu>()  は非負の CPU 番号を返す。 エラーの場合、-1 を"
4569 "返し、 I<errno> にエラーを示す値を設定する。"
4570
4571 #. type: TP
4572 #: build/C/man3/sched_getcpu.3:66 build/C/man2/sched_rr_get_interval.2:87
4573 #, no-wrap
4574 msgid "B<ENOSYS>"
4575 msgstr "B<ENOSYS>"
4576
4577 #. type: Plain text
4578 #: build/C/man3/sched_getcpu.3:70
4579 msgid "This kernel does not implement B<getcpu>(2)."
4580 msgstr "このカーネルでは B<getcpu>(2)  が実装されていない。"
4581
4582 #. type: Plain text
4583 #: build/C/man3/sched_getcpu.3:72
4584 msgid "This function is available since glibc 2.6."
4585 msgstr "この関数は glibc 2.6 以降で利用可能である。"
4586
4587 #. type: SH
4588 #: build/C/man3/sched_getcpu.3:72
4589 #, no-wrap
4590 msgid "ATTRIBUTES"
4591 msgstr "属性"
4592
4593 #. type: Plain text
4594 #: build/C/man3/sched_getcpu.3:75
4595 msgid ""
4596 "For an explanation of the terms used in this section, see B<attributes>(7)."
4597 msgstr "この節で使用されている用語の説明については、 B<attributes>(7) を参照。"
4598
4599 #. type: tbl table
4600 #: build/C/man3/sched_getcpu.3:79
4601 #, no-wrap
4602 msgid "Interface"
4603 msgstr "インターフェース"
4604
4605 #. type: tbl table
4606 #: build/C/man3/sched_getcpu.3:79
4607 #, no-wrap
4608 msgid "Attribute"
4609 msgstr "属性"
4610
4611 #. type: tbl table
4612 #: build/C/man3/sched_getcpu.3:79
4613 #, no-wrap
4614 msgid "Value"
4615 msgstr "値"
4616
4617 #. type: tbl table
4618 #: build/C/man3/sched_getcpu.3:82
4619 #, no-wrap
4620 msgid "B<sched_getcpu>()"
4621 msgstr "B<sched_getcpu>()"
4622
4623 #. type: tbl table
4624 #: build/C/man3/sched_getcpu.3:82
4625 #, no-wrap
4626 msgid "Thread safety"
4627 msgstr "Thread safety"
4628
4629 #. type: tbl table
4630 #: build/C/man3/sched_getcpu.3:82
4631 #, no-wrap
4632 msgid "MT-Safe"
4633 msgstr "MT-Safe"
4634
4635 #. type: Plain text
4636 #: build/C/man3/sched_getcpu.3:87
4637 msgid "B<sched_getcpu>()  is glibc-specific."
4638 msgstr "B<sched_getcpu>()  は glibc 固有である。"
4639
4640 #. type: Plain text
4641 #: build/C/man3/sched_getcpu.3:89
4642 msgid "The call"
4643 msgstr "呼び出し"
4644
4645 #. type: Plain text
4646 #: build/C/man3/sched_getcpu.3:93
4647 #, no-wrap
4648 msgid "cpu = sched_getcpu();\n"
4649 msgstr "cpu = sched_getcpu();\n"
4650
4651 #. type: Plain text
4652 #: build/C/man3/sched_getcpu.3:99
4653 msgid "is equivalent to the following B<getcpu>(2)  call:"
4654 msgstr "は、以下の B<getcpu>(2)  呼び出しと等価である。"
4655
4656 #. type: Plain text
4657 #: build/C/man3/sched_getcpu.3:105
4658 #, no-wrap
4659 msgid ""
4660 "int c, s;\n"
4661 "s = getcpu(&c, NULL, NULL);\n"
4662 "cpu = (s == -1) ? s : c;\n"
4663 msgstr ""
4664 "int c, s;\n"
4665 "s = getcpu(&c, NULL, NULL);\n"
4666 "cpu = (s == -1) ? s : c;\n"
4667
4668 #. type: Plain text
4669 #: build/C/man3/sched_getcpu.3:110
4670 msgid "B<getcpu>(2), B<sched>(7)"
4671 msgstr "B<getcpu>(2), B<sched>(7)"
4672
4673 #. type: TH
4674 #: build/C/man2/sched_rr_get_interval.2:29
4675 #, no-wrap
4676 msgid "SCHED_RR_GET_INTERVAL"
4677 msgstr "SCHED_RR_GET_INTERVAL"
4678
4679 #. type: Plain text
4680 #: build/C/man2/sched_rr_get_interval.2:32
4681 msgid "sched_rr_get_interval - get the SCHED_RR interval for the named process"
4682 msgstr "sched_rr_get_interval - 指定されたプロセスの SCHED_RR 間隔を取得する"
4683
4684 #. type: Plain text
4685 #: build/C/man2/sched_rr_get_interval.2:36
4686 msgid ""
4687 "B<int sched_rr_get_interval(pid_t >I<pid>B<, struct timespec *>I<tp>B<);>"
4688 msgstr " B<int sched_rr_get_interval(pid_t >I<pid>B<, struct timespec *>I<tp>B<);>"
4689
4690 #. type: Plain text
4691 #: build/C/man2/sched_rr_get_interval.2:47
4692 msgid ""
4693 "B<sched_rr_get_interval>()  writes into the I<timespec> structure pointed to "
4694 "by I<tp> the round-robin time quantum for the process identified by I<pid>.  "
4695 "The specified process should be running under the B<SCHED_RR> scheduling "
4696 "policy."
4697 msgstr ""
4698 "B<sched_rr_get_interval>() は I<tp> で指定された I<timespec> 構造体に\n"
4699 "I<pid> で指定されたプロセスのラウンドロビン時間量 (round robin time\n"
4700 "quantum) を書き込む。指定されたプロセスは B<SCHED_RR> スケジューリング\n"
4701 "ポリシーで動作しているはずである。"
4702
4703 #. type: Plain text
4704 #: build/C/man2/sched_rr_get_interval.2:51
4705 msgid "The I<timespec> structure has the following form:"
4706 msgstr "I<timespec> 構造体は以下の通りである:"
4707
4708 #. type: Plain text
4709 #: build/C/man2/sched_rr_get_interval.2:58
4710 #, no-wrap
4711 msgid ""
4712 "struct timespec {\n"
4713 "    time_t tv_sec;    /* seconds */\n"
4714 "    long   tv_nsec;   /* nanoseconds */\n"
4715 "};\n"
4716 msgstr ""
4717 "struct timespec {\n"
4718 "    time_t tv_sec;    /* seconds */\n"
4719 "    long   tv_nsec;   /* nanoseconds */\n"
4720 "};\n"
4721
4722 #
4723 #.  FIXME . On Linux, sched_rr_get_interval()
4724 #.  returns the timeslice for SCHED_OTHER processes -- this timeslice
4725 #.  is influenced by the nice value.
4726 #.  For SCHED_FIFO processes, this always returns 0.
4727 #.  The round-robin time quantum value is not alterable under Linux
4728 #.  1.3.81.
4729 #. type: Plain text
4730 #: build/C/man2/sched_rr_get_interval.2:73
4731 msgid ""
4732 "If I<pid> is zero, the time quantum for the calling process is written into "
4733 "I<*tp>."
4734 msgstr ""
4735 "I<pid> が 0 の場合、呼び出したプロセスの時間量 (time quantum) が\n"
4736 "I<*tp> に書き込まれる。"
4737
4738 #. type: Plain text
4739 #: build/C/man2/sched_rr_get_interval.2:80
4740 msgid ""
4741 "On success, B<sched_rr_get_interval>()  returns 0.  On error, -1 is "
4742 "returned, and I<errno> is set appropriately."
4743 msgstr ""
4744 "成功した場合は B<sched_rr_get_interval>()  は 0 を返す。 エラーの場合は -1 が"
4745 "返され、 I<errno> が適切に設定される。"
4746
4747 #. type: Plain text
4748 #: build/C/man2/sched_rr_get_interval.2:84
4749 msgid "Problem with copying information to user space."
4750 msgstr "情報をユーザー空間にコピーする時に問題が起きた。"
4751
4752 #. type: Plain text
4753 #: build/C/man2/sched_rr_get_interval.2:87
4754 msgid "Invalid pid."
4755 msgstr "PID が不正である。"
4756
4757 #. type: Plain text
4758 #: build/C/man2/sched_rr_get_interval.2:90
4759 msgid "The system call is not yet implemented (only on rather old kernels)."
4760 msgstr ""
4761 "システムコールがまだ実装されていない (かなり古いカーネルにおいてのみ)。"
4762
4763 #. type: Plain text
4764 #: build/C/man2/sched_rr_get_interval.2:94
4765 msgid "Could not find a process with the ID I<pid>."
4766 msgstr "プロセス ID が I<pid> のプロセスが見つからなかった。"
4767
4768 #. type: Plain text
4769 #: build/C/man2/sched_rr_get_interval.2:103
4770 msgid ""
4771 "POSIX systems on which B<sched_rr_get_interval>()  is available define "
4772 "B<_POSIX_PRIORITY_SCHEDULING> in I<E<lt>unistd.hE<gt>>."
4773 msgstr ""
4774 "POSIX システムで B<sched_rr_get_interval>() は I<E<lt>unistd.hE<gt>> に\n"
4775 "B<_POSIX_PRIORITY_SCHEDULING> が定義されている場合にのみ使用可能である。"
4776
4777 #. type: SS
4778 #: build/C/man2/sched_rr_get_interval.2:103
4779 #, no-wrap
4780 msgid "Linux notes"
4781 msgstr "Linux での注意"
4782
4783 #.  commit a4ec24b48ddef1e93f7578be53270f0b95ad666c
4784 #. type: Plain text
4785 #: build/C/man2/sched_rr_get_interval.2:117
4786 msgid ""
4787 "POSIX does not specify any mechanism for controlling the size of the round-"
4788 "robin time quantum.  Older Linux kernels provide a (nonportable) method of "
4789 "doing this.  The quantum can be controlled by adjusting the process's nice "
4790 "value (see B<setpriority>(2)).  Assigning a negative (i.e., high) nice value "
4791 "results in a longer quantum; assigning a positive (i.e., low) nice value "
4792 "results in a shorter quantum.  The default quantum is 0.1 seconds; the "
4793 "degree to which changing the nice value affects the quantum has varied "
4794 "somewhat across kernel versions.  This method of adjusting the quantum was "
4795 "removed starting with Linux 2.6.24."
4796 msgstr ""
4797 "POSIX ではラウンドロビン時間量の大きさを制御する仕組みが規定されていない。 古"
4798 "い Linux カーネルではこれを変更する方法が提供されている (この方法に移植性はな"
4799 "い)。 プロセスの nice 値を調整することで時間量を制御できる "
4800 "(B<setpriority>(2) 参照)。 負の nice 値 (すなわち、高い nice 値) を割り当てる"
4801 "と時間量は長くなり、 正の nice 値 (すなわち、低い nice 値) を割り当てると時間"
4802 "量は短くなる。 デフォルトの時間量は 0.1 秒である。 nice 値の変更が時間量にど"
4803 "の程度影響を与えるかは カーネルのバージョンにより多少異なる。時間量を調整する"
4804 "このメソッドは Linux 2.6.24 以降で削除された。"
4805
4806 #.  commit ce0dbbbb30aee6a835511d5be446462388ba9eee
4807 #.  .SH BUGS
4808 #.  As of Linux 1.3.81
4809 #.  .BR sched_rr_get_interval ()
4810 #.  returns with error
4811 #.  ENOSYS, because SCHED_RR has not yet been fully implemented and tested
4812 #.  properly.
4813 #. type: Plain text
4814 #: build/C/man2/sched_rr_get_interval.2:132
4815 msgid ""
4816 "Linux 3.9 added a new mechanism for adjusting (and viewing) the B<SCHED_RR> "
4817 "quantum: the I</proc/sys/kernel/sched_rr_timeslice_ms> file exposes the "
4818 "quantum as a millisecond value, whose default is 100.  Writing 0 to this "
4819 "file resets the quantum to the default value."
4820 msgstr ""
4821 "Linux 3.9 で、 B<SCHED_RR> の時間量の調整 (と参照) を行う新しい機構が追加され"
4822 "た。 I</proc/sys/kernel/sched_rr_timeslice_ms> ファイルでミリ秒単位の時間量の"
4823 "値が参照でき、 デフォルト値は 100 である。 このファイルに 0 を書き込むと、 時"
4824 "間量をデフォルト値に戻すことができる。"
4825
4826 #. type: Plain text
4827 #: build/C/man2/sched_rr_get_interval.2:134 build/C/man2/sched_yield.2:92
4828 msgid "B<sched>(7)"
4829 msgstr "B<sched>(7)"
4830
4831 #. type: TH
4832 #: build/C/man2/sched_setaffinity.2:34
4833 #, no-wrap
4834 msgid "SCHED_SETAFFINITY"
4835 msgstr "SCHED_SETAFFINITY"
4836
4837 #. type: Plain text
4838 #: build/C/man2/sched_setaffinity.2:38
4839 msgid ""
4840 "sched_setaffinity, sched_getaffinity - set and get a thread's CPU affinity "
4841 "mask"
4842 msgstr ""
4843 "sched_setaffinity, sched_getaffinity - スレッドの CPU affinity マスクを設定・"
4844 "取得する"
4845
4846 #. type: Plain text
4847 #: build/C/man2/sched_setaffinity.2:45
4848 #, no-wrap
4849 msgid ""
4850 "B<int sched_setaffinity(pid_t >I<pid>B<, size_t >I<cpusetsize>B<,>\n"
4851 "B<                      const cpu_set_t *>I<mask>B<);>\n"
4852 msgstr ""
4853 "B<int sched_setaffinity(pid_t >I<pid>B<, size_t >I<cpusetsize>B<,>\n"
4854 "B<                      const cpu_set_t *>I<mask>B<);>\n"
4855
4856 #. type: Plain text
4857 #: build/C/man2/sched_setaffinity.2:48
4858 #, no-wrap
4859 msgid ""
4860 "B<int sched_getaffinity(pid_t >I<pid>B<, size_t >I<cpusetsize>B<,>\n"
4861 "B<                      cpu_set_t *>I<mask>B<);>\n"
4862 msgstr ""
4863 "B<int sched_getaffinity(pid_t >I<pid>B<, size_t >I<cpusetsize>B<,>\n"
4864 "B<                      cpu_set_t *>I<mask>B<);>\n"
4865
4866 #. type: Plain text
4867 #: build/C/man2/sched_setaffinity.2:63
4868 msgid ""
4869 "A thread's CPU affinity mask determines the set of CPUs on which it is "
4870 "eligible to run.  On a multiprocessor system, setting the CPU affinity mask "
4871 "can be used to obtain performance benefits.  For example, by dedicating one "
4872 "CPU to a particular thread (i.e., setting the affinity mask of that thread "
4873 "to specify a single CPU, and setting the affinity mask of all other threads "
4874 "to exclude that CPU), it is possible to ensure maximum execution speed for "
4875 "that thread.  Restricting a thread to run on a single CPU also avoids the "
4876 "performance cost caused by the cache invalidation that occurs when a thread "
4877 "ceases to execute on one CPU and then recommences execution on a different "
4878 "CPU."
4879 msgstr ""
4880 "スレッドの CPU affinity (親和度) マスクは、そのスレッドが 実行を許可されてい"
4881 "る CPU の集合を決定する。 マルチプロセッサシステムでは、CPU affinity マスクを"
4882 "設定することで 性能上のメリットを得られる可能性がある。 例えば、特定のスレッ"
4883 "ドを一つの CPU に括り付け (すなわち、そのスレッドの affinity マスクを一つの "
4884 "CPU に設定し)、 他の全てのスレッドの affinity マスクからその CPU を除外するこ"
4885 "とで、 確実にそのスレッドの実行速度を最大にすることができる。 また、あるス"
4886 "レッドの実行を一つの CPU に限定することで、 一つの CPU での実行を停止してから"
4887 "別の CPU で実行を再開するときに発生する キャッシュ無効化 (cache "
4888 "invalidation) による性能面の劣化を避けることもできる。"
4889
4890 #. type: Plain text
4891 #: build/C/man2/sched_setaffinity.2:70
4892 msgid ""
4893 "A CPU affinity mask is represented by the I<cpu_set_t> structure, a \"CPU set"
4894 "\", pointed to by I<mask>.  A set of macros for manipulating CPU sets is "
4895 "described in B<CPU_SET>(3)."
4896 msgstr ""
4897 "CPU affinity マスクは「CPU の集合」を表す I<cpu_set_t> 構造体で表現され、 "
4898 "I<cpu_set_t> へのポインター I<mask> で指定される。 CPU 集合を操作するためのマ"
4899 "クロ群については B<CPU_SET>(3)  で記載されている。"
4900
4901 #. type: Plain text
4902 #: build/C/man2/sched_setaffinity.2:85
4903 msgid ""
4904 "B<sched_setaffinity>()  sets the CPU affinity mask of the thread whose ID is "
4905 "I<pid> to the value specified by I<mask>.  If I<pid> is zero, then the "
4906 "calling thread is used.  The argument I<cpusetsize> is the length (in bytes) "
4907 "of the data pointed to by I<mask>.  Normally this argument would be "
4908 "specified as I<sizeof(cpu_set_t)>."
4909 msgstr ""
4910 "B<sched_setaffinity>()  は、スレッド ID が I<pid> のスレッドの CPU affinity "
4911 "マスクを I<mask> で指定された値に設定する。 I<pid> が 0 の場合、呼び出し元ス"
4912 "レッドが使われる。 I<cpusetsize> 引き数には I<mask> が指すデータの長さ (バイ"
4913 "ト単位) である。 通常は、この引き数には I<sizeof(cpu_set_t)> を指定すればよ"
4914 "い。"
4915
4916 #. type: Plain text
4917 #: build/C/man2/sched_setaffinity.2:92
4918 msgid ""
4919 "If the thread specified by I<pid> is not currently running on one of the "
4920 "CPUs specified in I<mask>, then that thread is migrated to one of the CPUs "
4921 "specified in I<mask>."
4922 msgstr ""
4923 "I<pid> で指定されたスレッドが I<mask> で指定された CPU のいずれかで現在実行さ"
4924 "れていない場合、 そのスレッドは I<mask> で指定された CPU のいずれかに移動され"
4925 "る。"
4926
4927 #. type: Plain text
4928 #: build/C/man2/sched_setaffinity.2:107
4929 msgid ""
4930 "B<sched_getaffinity>()  writes the affinity mask of the thread whose ID is "
4931 "I<pid> into the I<cpu_set_t> structure pointed to by I<mask>.  The "
4932 "I<cpusetsize> argument specifies the size (in bytes) of I<mask>.  If I<pid> "
4933 "is zero, then the mask of the calling thread is returned."
4934 msgstr ""
4935 "B<sched_getaffinity>()  は、 スレッド ID が I<pid> のスレッドの affinity マス"
4936 "クを I<mask> が指す I<cpu_set_t> 構造体に書き込む。 I<cpusetsize> 引き数には "
4937 "I<mask> の (バイト単位の) 大きさを指定する。"
4938
4939 #. type: Plain text
4940 #: build/C/man2/sched_setaffinity.2:119
4941 #, fuzzy
4942 #| msgid ""
4943 #| "On success, B<sched_setaffinity>()  and B<sched_getaffinity>()  return "
4944 #| "0.  On error, -1 is returned, and I<errno> is set appropriately."
4945 msgid ""
4946 "On success, B<sched_setaffinity>()  and B<sched_getaffinity>()  return 0 "
4947 "(but see \"C library/kernel differences\" below, which notes that the "
4948 "underlying B<sched_getaffinity>()  differs in its return value).  On error, "
4949 "-1 is returned, and I<errno> is set appropriately."
4950 msgstr ""
4951 "成功した場合、 B<sched_setaffinity>()  と B<sched_getaffinity>()  は 0 を返"
4952 "す。 エラーの場合は -1 を返し、 I<errno> を適切に設定する。"
4953
4954 #. type: Plain text
4955 #: build/C/man2/sched_setaffinity.2:123
4956 msgid "A supplied memory address was invalid."
4957 msgstr "指定されたメモリー番地が不正である。"
4958
4959 #. type: Plain text
4960 #: build/C/man2/sched_setaffinity.2:133
4961 #, fuzzy
4962 #| msgid ""
4963 #| "The affinity bit mask I<mask> contains no processors that are currently "
4964 #| "physically on the system and permitted to the thread according to any "
4965 #| "restrictions that may be imposed by the \"cpuset\" mechanism described in "
4966 #| "B<cpuset>(7)."
4967 msgid ""
4968 "The affinity bit mask I<mask> contains no processors that are currently "
4969 "physically on the system and permitted to the thread according to any "
4970 "restrictions that may be imposed by I<cpuset> cgroups or the \"cpuset\" "
4971 "mechanism described in B<cpuset>(7)."
4972 msgstr ""
4973 "システム上に現在実際に存在し、かつ \"cpuset\" 機構が課す制限においてそのス"
4974 "レッドに対して許可されている プロセッサが、 affinity ビットマスク I<mask> に"
4975 "含まれていない。 \"cpuset\" 機構については B<cpuset>(7)  を参照。"
4976
4977 #. type: Plain text
4978 #: build/C/man2/sched_setaffinity.2:140
4979 msgid ""
4980 "(B<sched_getaffinity>()  and, in kernels before 2.6.9, "
4981 "B<sched_setaffinity>())  I<cpusetsize> is smaller than the size of the "
4982 "affinity mask used by the kernel."
4983 msgstr ""
4984 "(B<sched_getaffinity>()  と、カーネル 2.6.9 以前の B<sched_setaffinity>())  "
4985 "I<cpusetsize> がカーネルで使われている affinity マスクのサイズより小さい。"
4986
4987 #. type: Plain text
4988 #: build/C/man2/sched_setaffinity.2:151
4989 msgid ""
4990 "(B<sched_setaffinity>())  The calling thread does not have appropriate "
4991 "privileges.  The caller needs an effective user ID equal to the real user ID "
4992 "or effective user ID of the thread identified by I<pid>, or it must possess "
4993 "the B<CAP_SYS_NICE> capability in the user namespace of the thread I<pid>."
4994 msgstr "(B<sched_setaffinity>())  呼び出し元のスレッドに適切な特権がなかった。 呼び出し元は、実効ユーザー ID が I<pid> で識別されるスレッドの実ユーザー ID または実効ユーザー ID と同じであるか、スレッド I<pid> のユーザー名前空間で B<CAP_SYS_NICE> ケーパビリティ (capability) を持たなければならない。"
4995
4996 #. type: Plain text
4997 #: build/C/man2/sched_setaffinity.2:154 build/C/man2/sched_setattr.2:326
4998 #: build/C/man2/sched_setparam.2:119 build/C/man2/sched_setscheduler.2:168
4999 msgid "The thread whose ID is I<pid> could not be found."
5000 msgstr "ID が I<pid> のスレッドが見つからなかった。"
5001
5002 #. type: Plain text
5003 #: build/C/man2/sched_setaffinity.2:165
5004 msgid ""
5005 "The CPU affinity system calls were introduced in Linux kernel 2.5.8.  The "
5006 "system call wrappers were introduced in glibc 2.3.  Initially, the glibc "
5007 "interfaces included a I<cpusetsize> argument, typed as I<unsigned int>.  In "
5008 "glibc 2.3.3, the I<cpusetsize> argument was removed, but was then restored "
5009 "in glibc 2.3.4, with type I<size_t>."
5010 msgstr ""
5011 "CPU affinity システムコールは Linux kernel 2.5.8 で導入された。 これらのシス"
5012 "テムコールのラッパー関数は glibc 2.3 で導入された。 最初は、glibc のインター"
5013 "フェースには I<unsigned int> 型の I<cpusetsize> 引き数が入っていた。 glibc "
5014 "2.3.3 では I<cpusetsize> 引き数が削除されたが、glibc 2.3.4 で I<size_t> 型で"
5015 "復活した。"
5016
5017 #. type: Plain text
5018 #: build/C/man2/sched_setaffinity.2:167
5019 msgid "These system calls are Linux-specific."
5020 msgstr "これらのシステムコールは Linux 固有である。"
5021
5022 #. type: Plain text
5023 #: build/C/man2/sched_setaffinity.2:180
5024 msgid ""
5025 "After a call to B<sched_setaffinity>(), the set of CPUs on which the thread "
5026 "will actually run is the intersection of the set specified in the I<mask> "
5027 "argument and the set of CPUs actually present on the system.  The system may "
5028 "further restrict the set of CPUs on which the thread runs if the \"cpuset\" "
5029 "mechanism described in B<cpuset>(7)  is being used.  These restrictions on "
5030 "the actual set of CPUs on which the thread will run are silently imposed by "
5031 "the kernel."
5032 msgstr ""
5033 "B<sched_setaffinity>()  を呼び出した後は、スレッドが実際に実行される CPU の集"
5034 "合は、 I<mask> 引き数で指定された集合と、システム上に実際に存在する CPU の集"
5035 "合の 共通集合 (AND) となる。 \"cpuset\" 機構が使用されている場合には、スレッ"
5036 "ドが動作する CPU 集合 に対してシステムはさらに制限を加えるかもしれない "
5037 "(\"cpuset\" 機構については B<cpuset>(7)  を参照)。 スレッドが動作する実際の "
5038 "CPU 集合に対する制限はカーネルにより 暗黙のうちに適用される。"
5039
5040 #. type: Plain text
5041 #: build/C/man2/sched_setaffinity.2:192
5042 msgid ""
5043 "There are various ways of determining the number of CPUs available on the "
5044 "system, including: inspecting the contents of I</proc/cpuinfo>; using "
5045 "B<sysconf>(3)  to obtain the values of the B<_SC_NPROCESSORS_CONF> and "
5046 "B<_SC_NPROCESSORS_ONLN> parameters; and inspecting the list of CPU "
5047 "directories under I</sys/devices/system/cpu/>."
5048 msgstr ""
5049 "システムで利用可能な CPU 数を判定する方法はいくつかある。 I</proc/cpuinfo> の"
5050 "内容を調べる、 B<sysconf>(3) を使って B<_SC_NPROCESSORS_CONF> と "
5051 "B<_SC_NPROCESSORS_ONLN> の値を取得する、 I</sys/devices/system/cpu/> の CPU "
5052 "ディレクトリの一覧を調べる、などがある。"
5053
5054 #. type: Plain text
5055 #: build/C/man2/sched_setaffinity.2:195
5056 msgid "B<sched>(7)  has a description of the Linux scheduling scheme."
5057 msgstr "B<sched>(7) に Linux のスケジューリング方式についての説明がある。"
5058
5059 #. type: Plain text
5060 #: build/C/man2/sched_setaffinity.2:212
5061 msgid ""
5062 "The affinity mask is a per-thread attribute that can be adjusted "
5063 "independently for each of the threads in a thread group.  The value returned "
5064 "from a call to B<gettid>(2)  can be passed in the argument I<pid>.  "
5065 "Specifying I<pid> as 0 will set the attribute for the calling thread, and "
5066 "passing the value returned from a call to B<getpid>(2)  will set the "
5067 "attribute for the main thread of the thread group.  (If you are using the "
5068 "POSIX threads API, then use B<pthread_setaffinity_np>(3)  instead of "
5069 "B<sched_setaffinity>().)"
5070 msgstr ""
5071 "affinity マスクはスレッド単位の属性で、スレッドグループの 各スレッド単位に独"
5072 "立して調整することができる。 B<gettid>(2)  コールからの返り値をこのコールの "
5073 "I<pid> 引き数として渡すことができる。 I<pid> に 0 を指定すると呼び出し元のス"
5074 "レッドの属性が設定され、 B<getpid>(2)  コールからの返り値を I<pid> に指定する"
5075 "とスレッドグループのメインスレッドの属性が設定される (POSIX スレッド API を使"
5076 "用している場合、 B<sched_setaffinity>()  の代わりに "
5077 "B<pthread_setaffinity_np>(3)  を使用すること)。"
5078
5079 #. type: Plain text
5080 #: build/C/man2/sched_setaffinity.2:230
5081 msgid ""
5082 "The I<isolcpus> boot option can be used to isolate one or more CPUs at boot "
5083 "time, so that no processes are scheduled onto those CPUs.  Following the use "
5084 "of this boot option, the only way to schedule processes onto the isolated "
5085 "CPUs is via B<sched_setaffinity>()  or the B<cpuset>(7)  mechanism.  For "
5086 "further information, see the kernel source file I<Documentation/admin-guide/"
5087 "kernel-parameters.txt>.  As noted in that file, I<isolcpus> is the preferred "
5088 "mechanism of isolating CPUs (versus the alternative of manually setting the "
5089 "CPU affinity of all processes on the system)."
5090 msgstr ""
5091
5092 #. type: Plain text
5093 #: build/C/man2/sched_setaffinity.2:236
5094 msgid ""
5095 "A child created via B<fork>(2)  inherits its parent's CPU affinity mask.  "
5096 "The affinity mask is preserved across an B<execve>(2)."
5097 msgstr ""
5098 "B<fork>(2)  経由で生成された子プロセスは親プロセスの CPU affinity マスクを継"
5099 "承する。 affinity マスクは B<execve>(2)  の前後で保存される。"
5100
5101 #. type: Plain text
5102 #: build/C/man2/sched_setaffinity.2:244
5103 msgid ""
5104 "This manual page describes the glibc interface for the CPU affinity calls.  "
5105 "The actual system call interface is slightly different, with the I<mask> "
5106 "being typed as I<unsigned long\\ *>, reflecting the fact that the underlying "
5107 "implementation of CPU sets is a simple bit mask."
5108 msgstr "このマニュアルページでは CPU affinity コールの glibc インターフェースを 説明している。実際のシステムコールインターフェースは少し違っており、 実際の実装では CPU 集合は簡単なビットマスクであるという実状を反映し、 I<mask> の型が I<unsigned long\\ *> となっている。"
5109
5110 #. type: Plain text
5111 #: build/C/man2/sched_setaffinity.2:256
5112 msgid ""
5113 "On success, the raw B<sched_getaffinity>()  system call returns the number "
5114 "of bytes placed copied into the I<mask> buffer; this will be the minimum of "
5115 "I<cpusetsize> and the size (in bytes) of the I<cpumask_t> data type that is "
5116 "used internally by the kernel to represent the CPU set bit mask."
5117 msgstr ""
5118
5119 #. type: SS
5120 #: build/C/man2/sched_setaffinity.2:256
5121 #, no-wrap
5122 msgid "Handling systems with large CPU affinity masks"
5123 msgstr ""
5124
5125 #.  FIXME . See https://sourceware.org/bugzilla/show_bug.cgi?id=15630
5126 #.  and https://sourceware.org/ml/libc-alpha/2013-07/msg00288.html
5127 #. type: Plain text
5128 #: build/C/man2/sched_setaffinity.2:268
5129 msgid ""
5130 "The underlying system calls (which represent CPU masks as bit masks of type "
5131 "I<unsigned long\\ *>)  impose no restriction on the size of the CPU mask.  "
5132 "However, the I<cpu_set_t> data type used by glibc has a fixed size of 128 "
5133 "bytes, meaning that the maximum CPU number that can be represented is 1023.  "
5134 "If the kernel CPU affinity mask is larger than 1024, then calls of the form:"
5135 msgstr ""
5136
5137 #. type: Plain text
5138 #: build/C/man2/sched_setaffinity.2:270
5139 #, no-wrap
5140 msgid "    sched_getaffinity(pid, sizeof(cpu_set_t), &mask);\n"
5141 msgstr ""
5142
5143 #. type: Plain text
5144 #: build/C/man2/sched_setaffinity.2:280
5145 msgid ""
5146 "fail with the error B<EINVAL>, the error produced by the underlying system "
5147 "call for the case where the I<mask> size specified in I<cpusetsize> is "
5148 "smaller than the size of the affinity mask used by the kernel.  (Depending "
5149 "on the system CPU topology, the kernel affinity mask can be substantially "
5150 "larger than the number of active CPUs in the system.)"
5151 msgstr ""
5152
5153 #. type: Plain text
5154 #: build/C/man2/sched_setaffinity.2:291
5155 msgid ""
5156 "When working on systems with large kernel CPU affinity masks, one must "
5157 "dynamically allocate the I<mask> argument (see B<CPU_ALLOC>(3)).  Currently, "
5158 "the only way to do this is by probing for the size of the required mask "
5159 "using B<sched_getaffinity>()  calls with increasing mask sizes (until the "
5160 "call does not fail with the error B<EINVAL>)."
5161 msgstr ""
5162
5163 #. type: Plain text
5164 #: build/C/man2/sched_setaffinity.2:306
5165 msgid ""
5166 "Be aware that B<CPU_ALLOC>(3)  may allocate a slightly larger CPU set than "
5167 "requested (because CPU sets are implemented as bit masks allocated in units "
5168 "of I<sizeof(long)>).  Consequently, B<sched_getaffinity>()  can set bits "
5169 "beyond the requested allocation size, because the kernel sees a few "
5170 "additional bits.  Therefore, the caller should iterate over the bits in the "
5171 "returned set, counting those which are set, and stop upon reaching the value "
5172 "returned by B<CPU_COUNT>(3)  (rather than iterating over the number of bits "
5173 "requested to be allocated)."
5174 msgstr ""
5175
5176 #. type: Plain text
5177 #: build/C/man2/sched_setaffinity.2:315
5178 msgid ""
5179 "The program below creates a child process.  The parent and child then each "
5180 "assign themselves to a specified CPU and execute identical loops that "
5181 "consume some CPU time.  Before terminating, the parent waits for the child "
5182 "to complete.  The program takes three command-line arguments: the CPU number "
5183 "for the parent, the CPU number for the child, and the number of loop "
5184 "iterations that both processes should perform."
5185 msgstr ""
5186
5187 #. type: Plain text
5188 #: build/C/man2/sched_setaffinity.2:319
5189 msgid ""
5190 "As the sample runs below demonstrate, the amount of real and CPU time "
5191 "consumed when running the program will depend on intra-core caching effects "
5192 "and whether the processes are using the same CPU."
5193 msgstr ""
5194
5195 #. type: Plain text
5196 #: build/C/man2/sched_setaffinity.2:324
5197 msgid ""
5198 "We first employ B<lscpu>(1)  to determine that this (x86)  system has two "
5199 "cores, each with two CPUs:"
5200 msgstr ""
5201
5202 #. type: Plain text
5203 #: build/C/man2/sched_setaffinity.2:331
5204 #, no-wrap
5205 msgid ""
5206 "$ B<lscpu | egrep -i \\(aqcore.*:|socket\\(aq>\n"
5207 "Thread(s) per core:    2\n"
5208 "Core(s) per socket:    2\n"
5209 "Socket(s):             1\n"
5210 msgstr ""
5211
5212 #. type: Plain text
5213 #: build/C/man2/sched_setaffinity.2:338
5214 msgid ""
5215 "We then time the operation of the example program for three cases: both "
5216 "processes running on the same CPU; both processes running on different CPUs "
5217 "on the same core; and both processes running on different CPUs on different "
5218 "cores."
5219 msgstr ""
5220
5221 #. type: Plain text
5222 #: build/C/man2/sched_setaffinity.2:353
5223 #, no-wrap
5224 msgid ""
5225 "$ B<time -p ./a.out 0 0 100000000>\n"
5226 "real 14.75\n"
5227 "user 3.02\n"
5228 "sys 11.73\n"
5229 "$ B<time -p ./a.out 0 1 100000000>\n"
5230 "real 11.52\n"
5231 "user 3.98\n"
5232 "sys 19.06\n"
5233 "$ B<time -p ./a.out 0 3 100000000>\n"
5234 "real 7.89\n"
5235 "user 3.29\n"
5236 "sys 12.07\n"
5237 msgstr ""
5238
5239 #. type: Plain text
5240 #: build/C/man2/sched_setaffinity.2:364
5241 #, no-wrap
5242 msgid ""
5243 "#define _GNU_SOURCE\n"
5244 "#include E<lt>sched.hE<gt>\n"
5245 "#include E<lt>stdio.hE<gt>\n"
5246 "#include E<lt>stdlib.hE<gt>\n"
5247 "#include E<lt>unistd.hE<gt>\n"
5248 "#include E<lt>sys/wait.hE<gt>\n"
5249 msgstr ""
5250 " #define _GNU_SOURCE\n"
5251 "#include E<lt>sched.hE<gt>\n"
5252 "#include E<lt>stdio.hE<gt>\n"
5253 "#include E<lt>stdlib.hE<gt>\n"
5254 "#include E<lt>unistd.hE<gt>\n"
5255 "#include E<lt>sys/wait.hE<gt>\n"
5256
5257 #. type: Plain text
5258 #: build/C/man2/sched_setaffinity.2:374
5259 #, no-wrap
5260 msgid ""
5261 "int\n"
5262 "main(int argc, char *argv[])\n"
5263 "{\n"
5264 "    cpu_set_t set;\n"
5265 "    int parentCPU, childCPU;\n"
5266 "    int nloops;\n"
5267 msgstr ""
5268 " int\n"
5269 "main(int argc, char *argv[])\n"
5270 "{\n"
5271 "    cpu_set_t set;\n"
5272 "    int parentCPU, childCPU;\n"
5273 "    int nloops;\n"
5274
5275 #. type: Plain text
5276 #: build/C/man2/sched_setaffinity.2:380
5277 #, no-wrap
5278 msgid ""
5279 "    if (argc != 4) {\n"
5280 "        fprintf(stderr, \"Usage: %s parent-cpu child-cpu num-loops\\en\",\n"
5281 "                argv[0]);\n"
5282 "        exit(EXIT_FAILURE);\n"
5283 "    }\n"
5284 msgstr ""
5285 "     if (argc != 4) {\n"
5286 "        fprintf(stderr, \"Usage: %s parent-cpu child-cpu num-loops\\en\",\n"
5287 "                argv[0]);\n"
5288 "        exit(EXIT_FAILURE);\n"
5289 "    }\n"
5290
5291 #. type: Plain text
5292 #: build/C/man2/sched_setaffinity.2:384
5293 #, no-wrap
5294 msgid ""
5295 "    parentCPU = atoi(argv[1]);\n"
5296 "    childCPU = atoi(argv[2]);\n"
5297 "    nloops = atoi(argv[3]);\n"
5298 msgstr ""
5299
5300 #. type: Plain text
5301 #: build/C/man2/sched_setaffinity.2:386
5302 #, no-wrap
5303 msgid "    CPU_ZERO(&set);\n"
5304 msgstr "     CPU_ZERO(&set);\n"
5305
5306 #. type: Plain text
5307 #: build/C/man2/sched_setaffinity.2:390
5308 #, no-wrap
5309 msgid ""
5310 "    switch (fork()) {\n"
5311 "    case -1:            /* Error */\n"
5312 "        errExit(\"fork\");\n"
5313 msgstr ""
5314
5315 #. type: Plain text
5316 #: build/C/man2/sched_setaffinity.2:393
5317 #, no-wrap
5318 msgid ""
5319 "    case 0:             /* Child */\n"
5320 "        CPU_SET(childCPU, &set);\n"
5321 msgstr ""
5322
5323 #. type: Plain text
5324 #: build/C/man2/sched_setaffinity.2:396 build/C/man2/sched_setaffinity.2:407
5325 #, no-wrap
5326 msgid ""
5327 "        if (sched_setaffinity(getpid(), sizeof(set), &set) == -1)\n"
5328 "            errExit(\"sched_setaffinity\");\n"
5329 msgstr ""
5330 "         if (sched_setaffinity(getpid(), sizeof(set), &set) == -1)\n"
5331 "            errExit(\"sched_setaffinity\");\n"
5332
5333 #. type: Plain text
5334 #: build/C/man2/sched_setaffinity.2:399 build/C/man2/sched_setaffinity.2:410
5335 #, no-wrap
5336 msgid ""
5337 "        for (int j = 0; j E<lt> nloops; j++)\n"
5338 "            getppid();\n"
5339 msgstr ""
5340
5341 #. type: Plain text
5342 #: build/C/man2/sched_setaffinity.2:401
5343 #, no-wrap
5344 msgid "        exit(EXIT_SUCCESS);\n"
5345 msgstr "         exit(EXIT_SUCCESS);\n"
5346
5347 #. type: Plain text
5348 #: build/C/man2/sched_setaffinity.2:404
5349 #, no-wrap
5350 msgid ""
5351 "    default:            /* Parent */\n"
5352 "        CPU_SET(parentCPU, &set);\n"
5353 msgstr ""
5354
5355 #. type: Plain text
5356 #: build/C/man2/sched_setaffinity.2:415
5357 #, no-wrap
5358 msgid ""
5359 "        wait(NULL);     /* Wait for child to terminate */\n"
5360 "        exit(EXIT_SUCCESS);\n"
5361 "    }\n"
5362 "}\n"
5363 msgstr ""
5364
5365 #. type: Plain text
5366 #: build/C/man2/sched_setaffinity.2:440
5367 msgid ""
5368 "B<lscpu>(1), B<nproc>(1), B<taskset>(1), B<clone>(2), B<getcpu>(2), "
5369 "B<getpriority>(2), B<gettid>(2), B<nice>(2), B<sched_get_priority_max>(2), "
5370 "B<sched_get_priority_min>(2), B<sched_getscheduler>(2), "
5371 "B<sched_setscheduler>(2), B<setpriority>(2), B<CPU_SET>(3), "
5372 "B<get_nprocs>(3), B<pthread_setaffinity_np>(3), B<sched_getcpu>(3), "
5373 "B<capabilities>(7), B<cpuset>(7), B<sched>(7), B<numactl>(8)"
5374 msgstr " B<lscpu>(1), B<nproc>(1), B<taskset>(1), B<clone>(2), B<getcpu>(2), B<getpriority>(2), B<gettid>(2), B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), B<sched_getscheduler>(2), B<sched_setscheduler>(2), B<setpriority>(2), B<CPU_SET>(3), B<get_nprocs>(3), B<pthread_setaffinity_np>(3), B<sched_getcpu>(3), B<capabilities>(7), B<cpuset>(7), B<sched>(7), B<numactl>(8)"
5375
5376 #. type: TH
5377 #: build/C/man2/sched_setattr.2:26
5378 #, no-wrap
5379 msgid "SCHED_SETATTR"
5380 msgstr "SCHED_SETATTR"
5381
5382 #. type: Plain text
5383 #: build/C/man2/sched_setattr.2:30
5384 msgid ""
5385 "sched_setattr, sched_getattr - set and get scheduling policy and attributes"
5386 msgstr ""
5387 "sched_setattr, sched_getattr - スケジューリングポリシーと属性の設定と取得を行"
5388 "なう"
5389
5390 #. type: Plain text
5391 #: build/C/man2/sched_setattr.2:36
5392 #, no-wrap
5393 msgid ""
5394 "B<int sched_setattr(pid_t >I<pid>B<, struct sched_attr *>I<attr>B<,>\n"
5395 "B<                  unsigned int >I<flags>B<);>\n"
5396 msgstr ""
5397 " B<int sched_setattr(pid_t >I<pid>B<, struct sched_attr *>I<attr>B<,>\n"
5398 "B<                  unsigned int >I<flags>B<);>\n"
5399
5400 #. type: Plain text
5401 #: build/C/man2/sched_setattr.2:39
5402 #, no-wrap
5403 msgid ""
5404 "B<int sched_getattr(pid_t >I<pid>B<, struct sched_attr *>I<attr>B<,>\n"
5405 "B<                  unsigned int >I<size>B<, unsigned int >I<flags>B<);>\n"
5406 msgstr ""
5407 " B<int sched_getattr(pid_t >I<pid>B<, struct sched_attr *>I<attr>B<,>\n"
5408 "B<                  unsigned int >I<size>B<, unsigned int >I<flags>B<);>\n"
5409
5410 #. type: SS
5411 #: build/C/man2/sched_setattr.2:42
5412 #, no-wrap
5413 msgid "sched_setattr()"
5414 msgstr "sched_setattr()"
5415
5416 #. type: Plain text
5417 #: build/C/man2/sched_setattr.2:52
5418 msgid ""
5419 "The B<sched_setattr>()  system call sets the scheduling policy and "
5420 "associated attributes for the thread whose ID is specified in I<pid>.  If "
5421 "I<pid> equals zero, the scheduling policy and attributes of the calling "
5422 "thread will be set."
5423 msgstr ""
5424 "B<sched_setattr>() システムコールは、 I<pid> で指定された ID を持つスレッドの"
5425 "スケジューリングポリシーと関連する属性を設定する。 I<pid> が 0 の場合、呼び出"
5426 "したスレッド自身のスケジューリングポリシーと属性が設定される。"
5427
5428 #. type: Plain text
5429 #: build/C/man2/sched_setattr.2:56 build/C/man2/sched_setscheduler.2:71
5430 msgid ""
5431 "Currently, Linux supports the following \"normal\" (i.e., non-real-time) "
5432 "scheduling policies as values that may be specified in I<policy>:"
5433 msgstr ""
5434 "現在のところ、 Linux では、 以下の「通常」の (つまり、リアルタイムではない) "
5435 "スケジューリングポリシーが、 I<policy> に指定できる値としてサポートされてい"
5436 "る。"
5437
5438 #. type: TP
5439 #: build/C/man2/sched_setattr.2:56 build/C/man2/sched_setscheduler.2:71
5440 #, no-wrap
5441 msgid "B<SCHED_OTHER>"
5442 msgstr "B<SCHED_OTHER>"
5443
5444 #.  In the 2.6 kernel sources, SCHED_OTHER is actually called
5445 #.  SCHED_NORMAL.
5446 #. type: Plain text
5447 #: build/C/man2/sched_setattr.2:61 build/C/man2/sched_setscheduler.2:76
5448 msgid "the standard round-robin time-sharing policy;"
5449 msgstr "標準の、ラウンドロビンによる時分割型のスケジューリングポリシー。"
5450
5451 #. type: TP
5452 #: build/C/man2/sched_setattr.2:61 build/C/man2/sched_setscheduler.2:76
5453 #, no-wrap
5454 msgid "B<SCHED_BATCH>"
5455 msgstr "B<SCHED_BATCH>"
5456
5457 #. type: Plain text
5458 #: build/C/man2/sched_setattr.2:64 build/C/man2/sched_setscheduler.2:79
5459 msgid "for \"batch\" style execution of processes; and"
5460 msgstr "「バッチ」形式でのプロセスの実行用。"
5461
5462 #. type: TP
5463 #: build/C/man2/sched_setattr.2:64 build/C/man2/sched_setscheduler.2:79
5464 #, no-wrap
5465 msgid "B<SCHED_IDLE>"
5466 msgstr "B<SCHED_IDLE>"
5467
5468 #. type: Plain text
5469 #: build/C/man2/sched_setattr.2:69 build/C/man2/sched_setscheduler.2:84
5470 msgid "for running I<very> low priority background jobs."
5471 msgstr "「非常に」低い優先度で動作するバックグラウンドジョブ用。"
5472
5473 #. type: Plain text
5474 #: build/C/man2/sched_setattr.2:78 build/C/man2/sched_setscheduler.2:97
5475 msgid ""
5476 "Various \"real-time\" policies are also supported, for special time-critical "
5477 "applications that need precise control over the way in which runnable "
5478 "threads are selected for execution.  For the rules governing when a process "
5479 "may use these policies, see B<sched>(7).  The real-time policies that may be "
5480 "specified in I<policy> are:"
5481 msgstr ""
5482 "どの実行可能スレッドを選択するかについて、より正確な制御を必要とする 時間の制"
5483 "約が厳しい特別なアプリケーション用として、 いろいろな「リアルタイム」ポリシー"
5484 "もサポートされている。 プロセスがこれらのポリシーをいつ使用できるかを決める"
5485 "ルールについては、B<sched>(7) を参照。 I<policy> には以下のリアルタイムポリ"
5486 "シーを指定できる。"
5487
5488 #. type: TP
5489 #: build/C/man2/sched_setattr.2:78 build/C/man2/sched_setscheduler.2:97
5490 #, no-wrap
5491 msgid "B<SCHED_FIFO>"
5492 msgstr "B<SCHED_FIFO>"
5493
5494 #. type: Plain text
5495 #: build/C/man2/sched_setattr.2:81 build/C/man2/sched_setscheduler.2:100
5496 msgid "a first-in, first-out policy; and"
5497 msgstr "ファーストイン、ファーストアウト型のポリシー。"
5498
5499 #. type: TP
5500 #: build/C/man2/sched_setattr.2:81 build/C/man2/sched_setscheduler.2:100
5501 #, no-wrap
5502 msgid "B<SCHED_RR>"
5503 msgstr "B<SCHED_RR>"
5504
5505 #. type: Plain text
5506 #: build/C/man2/sched_setattr.2:84 build/C/man2/sched_setscheduler.2:103
5507 msgid "a round-robin policy."
5508 msgstr "ラウンドロビン型のポリシー。"
5509
5510 #. type: Plain text
5511 #: build/C/man2/sched_setattr.2:86
5512 msgid "Linux also provides the following policy:"
5513 msgstr "Linux では以下のポリシーも提供されている。"
5514
5515 #. type: TP
5516 #: build/C/man2/sched_setattr.2:86
5517 #, no-wrap
5518 msgid "B<SCHED_DEADLINE>"
5519 msgstr "B<SCHED_DEADLINE>"
5520
5521 #. type: Plain text
5522 #: build/C/man2/sched_setattr.2:91
5523 msgid "a deadline scheduling policy; see B<sched>(7)  for details."
5524 msgstr ""
5525 "デッドライン (応答期限) ベースのスケジューリングポリシー。詳細は B<sched>(7) "
5526 "を参照。"
5527
5528 #. type: Plain text
5529 #: build/C/man2/sched_setattr.2:97
5530 msgid ""
5531 "The I<attr> argument is a pointer to a structure that defines the new "
5532 "scheduling policy and attributes for the specified thread.  This structure "
5533 "has the following form:"
5534 msgstr ""
5535 "I<attr> 引き数は、 指定したスレッドの新しいスケジューリングポリシーと属性を定"
5536 "義した構造体へのポインターである。 この構造体は以下の形式である。"
5537
5538 #. type: Plain text
5539 #: build/C/man2/sched_setattr.2:113
5540 #, no-wrap
5541 msgid ""
5542 "struct sched_attr {\n"
5543 "    u32 size;              /* Size of this structure */\n"
5544 "    u32 sched_policy;      /* Policy (SCHED_*) */\n"
5545 "    u64 sched_flags;       /* Flags */\n"
5546 "    s32 sched_nice;        /* Nice value (SCHED_OTHER,\n"
5547 "                              SCHED_BATCH) */\n"
5548 "    u32 sched_priority;    /* Static priority (SCHED_FIFO,\n"
5549 "                              SCHED_RR) */\n"
5550 "    /* Remaining fields are for SCHED_DEADLINE */\n"
5551 "    u64 sched_runtime;\n"
5552 "    u64 sched_deadline;\n"
5553 "    u64 sched_period;\n"
5554 "};\n"
5555 msgstr ""
5556 "struct sched_attr {\n"
5557 "    u32 size;              /* この構造体のサイズ */\n"
5558 "    u32 sched_policy;      /* ポリシー (SCHED_*) */\n"
5559 "    u64 sched_flags;       /* フラグ */\n"
5560 "    s32 sched_nice;        /* nice 値 (SCHED_OTHER,\n"
5561 "                              SCHED_BATCH) */\n"
5562 "    u32 sched_priority;    /* 静的優先度 (SCHED_FIFO,\n"
5563 "                              SCHED_RR) */\n"
5564 "    /* 残りのフィールドは SCHED_DEADLINE 用である */\n"
5565 "    u64 sched_runtime;\n"
5566 "    u64 sched_deadline;\n"
5567 "    u64 sched_period;\n"
5568 "};\n"
5569
5570 #. type: Plain text
5571 #: build/C/man2/sched_setattr.2:119
5572 msgid "The fields of the I<sched_attr> structure are as follows:"
5573 msgstr "構造体 I<sched_attr> のフィールドは以下の通りである。"
5574
5575 #. type: TP
5576 #: build/C/man2/sched_setattr.2:119
5577 #, no-wrap
5578 msgid "B<size>"
5579 msgstr "B<size>"
5580
5581 #. type: Plain text
5582 #: build/C/man2/sched_setattr.2:134
5583 msgid ""
5584 "This field should be set to the size of the structure in bytes, as in "
5585 "I<sizeof(struct sched_attr)>.  If the provided structure is smaller than the "
5586 "kernel structure, any additional fields are assumed to be '0'.  If the "
5587 "provided structure is larger than the kernel structure, the kernel verifies "
5588 "that all additional fields are 0; if they are not, B<sched_setattr>()  fails "
5589 "with the error B<E2BIG> and updates I<size> to contain the size of the "
5590 "kernel structure."
5591 msgstr ""
5592 "このフィールドには、 構造体のバイト単位のサイズを設定する。 I<sizeof(struct "
5593 "sched_attr)> を指定すればよい。 指定された構造体がカーネル構造体よりも小さい"
5594 "場合、 追加となるフィールドは 0 とみなされる。 指定された構造体がカーネル構造"
5595 "体よりも大きい場合、 カーネルは追加のフィールドが 0 であるかを検査する。 0 で"
5596 "ない場合は B<sched_setattr>() はエラー B<E2BIG> で失敗するので、 I<size> を"
5597 "カーネル構造体のサイズに更新する必要がある。"
5598
5599 #. type: Plain text
5600 #: build/C/man2/sched_setattr.2:148
5601 msgid ""
5602 "The above behavior when the size of the user-space I<sched_attr> structure "
5603 "does not match the size of the kernel structure allows for future "
5604 "extensibility of the interface.  Malformed applications that pass oversize "
5605 "structures won't break in the future if the size of the kernel I<sched_attr> "
5606 "structure is increased.  In the future, it could also allow applications "
5607 "that know about a larger user-space I<sched_attr> structure to determine "
5608 "whether they are running on an older kernel that does not support the larger "
5609 "structure."
5610 msgstr ""
5611 "ユーザー空間の I<sched_attr> 構造体のサイズがカーネル構造体のサイズと一致しな"
5612 "かった場合の上記の動作は、 このインターフェースを将来拡張できるようにするため"
5613 "である。 サイズが大きい構造体を渡す行儀の良くないアプリケーションも、 将来"
5614 "カーネルの I<sched_attr> 構造体のサイズが大きくなったとしてもおかしくならな"
5615 "い。 この仕組みにより、 将来的には、 大きなユーザー空間 I<sched_attr> 構造体"
5616 "があることを知っているアプリケーションで、 大きいサイズの構造体に対応していな"
5617 "い古いカーネル上で動作しているかを判定することができる。"
5618
5619 #. type: TP
5620 #: build/C/man2/sched_setattr.2:148
5621 #, no-wrap
5622 msgid "I<sched_policy>"
5623 msgstr "I<sched_policy>"
5624
5625 #. type: Plain text
5626 #: build/C/man2/sched_setattr.2:153
5627 msgid ""
5628 "This field specifies the scheduling policy, as one of the B<SCHED_*> values "
5629 "listed above."
5630 msgstr ""
5631 "このフィールドはスケジューリングポリシーを指定する。 上記のリストにある "
5632 "B<SCHED_*> 値のいずれかを指定する。"
5633
5634 #. type: TP
5635 #: build/C/man2/sched_setattr.2:153
5636 #, no-wrap
5637 msgid "I<sched_flags>"
5638 msgstr "I<sched_flags>"
5639
5640 #. type: Plain text
5641 #: build/C/man2/sched_setattr.2:157
5642 msgid ""
5643 "This field contains zero or more of the following flags that are ORed "
5644 "together to control scheduling behavior:"
5645 msgstr ""
5646
5647 #. type: TP
5648 #: build/C/man2/sched_setattr.2:158
5649 #, no-wrap
5650 msgid "B<SCHED_FLAG_RESET_ON_FORK>"
5651 msgstr " B<SCHED_FLAG_RESET_ON_FORK>"
5652
5653 #. type: Plain text
5654 #: build/C/man2/sched_setattr.2:166
5655 #, fuzzy
5656 #| msgid "a deadline scheduling policy; see B<sched>(7)  for details."
5657 msgid ""
5658 "Children created by B<fork>(2)  do not inherit privileged scheduling "
5659 "policies.  See B<sched>(7)  for details."
5660 msgstr ""
5661 "デッドライン (応答期限) ベースのスケジューリングポリシー。詳細は B<sched>(7) "
5662 "を参照。"
5663
5664 #. type: TP
5665 #: build/C/man2/sched_setattr.2:166
5666 #, no-wrap
5667 msgid "B<SCHED_FLAG_RECLAIM> (since Linux 4.13)"
5668 msgstr "B<SCHED_FLAG_RECLAIM> (Linux 4.13 以降)"
5669
5670 #.  2d4283e9d583a3ee8cfb1cbb9c1270614df4c29d
5671 #.  Bandwidth reclaim is done via the GRUB algorithm; see
5672 #.  Documentation/scheduler/sched-deadline.txt
5673 #. type: Plain text
5674 #: build/C/man2/sched_setattr.2:174
5675 msgid ""
5676 "This flag allows a B<SCHED_DEADLINE> thread to reclaim bandwidth unused by "
5677 "other real-time threads."
5678 msgstr ""
5679
5680 #. type: TP
5681 #: build/C/man2/sched_setattr.2:174
5682 #, no-wrap
5683 msgid "B<SCHED_FLAG_DL_OVERRUN> (since Linux 4.16)"
5684 msgstr "B<SCHED_FLAG_DL_OVERRUN> (Linux 4.16 以降)"
5685
5686 #.  commit 34be39305a77b8b1ec9f279163c7cdb6cc719b91
5687 #. type: Plain text
5688 #: build/C/man2/sched_setattr.2:185
5689 msgid ""
5690 "This flag allows an application to get informed about run-time overruns in "
5691 "B<SCHED_DEADLINE> threads.  Such overruns may be caused by (for example) "
5692 "coarse execution time accounting or incorrect parameter assignment.  "
5693 "Notification takes the form of a B<SIGXCPU> signal which is generated on "
5694 "each overrun."
5695 msgstr ""
5696
5697 #. type: Plain text
5698 #: build/C/man2/sched_setattr.2:200
5699 msgid ""
5700 "This B<SIGXCPU> signal is I<process-directed> (see B<signal>(7))  rather "
5701 "than thread-directed.  This is probably a bug.  On the one hand, "
5702 "B<sched_setattr>()  is being used to set a per-thread attribute.  On the "
5703 "other hand, if the process-directed signal is delivered to a thread inside "
5704 "the process other than the one that had a run-time overrun, the application "
5705 "has no way of knowing which thread overran."
5706 msgstr ""
5707
5708 #. type: TP
5709 #: build/C/man2/sched_setattr.2:201
5710 #, no-wrap
5711 msgid "I<sched_nice>"
5712 msgstr "I<sched_nice>"
5713
5714 #. type: Plain text
5715 #: build/C/man2/sched_setattr.2:212
5716 msgid ""
5717 "This field specifies the nice value to be set when specifying "
5718 "I<sched_policy> as B<SCHED_OTHER> or B<SCHED_BATCH>.  The nice value is a "
5719 "number in the range -20 (high priority)  to +19 (low priority); see "
5720 "B<sched>(7)."
5721 msgstr "このフィールドは、 I<sched_policy> に B<SCHED_OTHER> か B<SCHED_BATCH> が指定された場合に設定される nice 値を指定する。 nice 値は -20 (高優先度) から +19 (低優先度) の範囲の数値である。 B<sched>(7) を参照。"
5722
5723 #. type: TP
5724 #: build/C/man2/sched_setattr.2:212
5725 #, no-wrap
5726 msgid "I<sched_priority>"
5727 msgstr "I<sched_priority>"
5728
5729 #. type: Plain text
5730 #: build/C/man2/sched_setattr.2:225
5731 msgid ""
5732 "This field specifies the static priority to be set when specifying "
5733 "I<sched_policy> as B<SCHED_FIFO> or B<SCHED_RR>.  The allowed range of "
5734 "priorities for these policies can be determined using "
5735 "B<sched_get_priority_min>(2)  and B<sched_get_priority_max>(2).  For other "
5736 "policies, this field must be specified as 0."
5737 msgstr ""
5738 "このフィールドは、 I<sched_policy> に B<SCHED_FIFO> か B<SCHED_RR> が指定され"
5739 "た場合に設定される静的優先度を指定する。 これらのポリシーで指定できる優先度の"
5740 "範囲は、 B<sched_get_priority_min>(2) と B<sched_get_priority_max>(2) を使っ"
5741 "て判定できる。 他のポリシーでは、 このフィールドには 0 を指定しなければならな"
5742 "い。"
5743
5744 #. type: TP
5745 #: build/C/man2/sched_setattr.2:225
5746 #, no-wrap
5747 msgid "I<sched_runtime>"
5748 msgstr "I<sched_runtime>"
5749
5750 #. type: Plain text
5751 #: build/C/man2/sched_setattr.2:234
5752 msgid ""
5753 "This field specifies the \"Runtime\" parameter for deadline scheduling.  The "
5754 "value is expressed in nanoseconds.  This field, and the next two fields, are "
5755 "used only for B<SCHED_DEADLINE> scheduling; for further details, see "
5756 "B<sched>(7)."
5757 msgstr ""
5758 "このフィールドは、 デッドラインスケジューリングの \"Runtime\" パラメーターを"
5759 "指定する。 この値はナノ秒単位で表現される。 このフィールドと次の 2 つのフィー"
5760 "ルドは B<SCHED_DEADLINE> スケジューリングにおいてのみ使用される。 詳細は "
5761 "B<sched>(7) を参照。"
5762
5763 #. type: TP
5764 #: build/C/man2/sched_setattr.2:234
5765 #, no-wrap
5766 msgid "I<sched_deadline>"
5767 msgstr "I<sched_deadline>"
5768
5769 #. type: Plain text
5770 #: build/C/man2/sched_setattr.2:238
5771 msgid ""
5772 "This field specifies the \"Deadline\" parameter for deadline scheduling.  "
5773 "The value is expressed in nanoseconds."
5774 msgstr ""
5775 "このフィールドは、 デッドラインスケジューリングの \"Deadline\" パラメーターを"
5776 "指定する。 この値はナノ秒単位で表現される。"
5777
5778 #. type: TP
5779 #: build/C/man2/sched_setattr.2:238
5780 #, no-wrap
5781 msgid "I<sched_period>"
5782 msgstr "I<sched_period>"
5783
5784 #. type: Plain text
5785 #: build/C/man2/sched_setattr.2:242
5786 msgid ""
5787 "This field specifies the \"Period\" parameter for deadline scheduling.  The "
5788 "value is expressed in nanoseconds."
5789 msgstr ""
5790 "このフィールドは、 デッドラインスケジューリングの \"Period\" パラメーターを指"
5791 "定する。 この値はナノ秒単位で表現される。"
5792
5793 #. type: Plain text
5794 #: build/C/man2/sched_setattr.2:249 build/C/man2/sched_setattr.2:299
5795 msgid ""
5796 "The I<flags> argument is provided to allow for future extensions to the "
5797 "interface; in the current implementation it must be specified as 0."
5798 msgstr ""
5799 "I<flags> 引き数は、このインターフェースの将来の拡張のために用意されている。 "
5800 "現在の実装では 0 を指定しなければならない。"
5801
5802 #. type: SS
5803 #: build/C/man2/sched_setattr.2:249
5804 #, no-wrap
5805 msgid "sched_getattr()"
5806 msgstr "sched_getattr()"
5807
5808 #. type: Plain text
5809 #: build/C/man2/sched_setattr.2:260
5810 msgid ""
5811 "The B<sched_getattr>()  system call fetches the scheduling policy and the "
5812 "associated attributes for the thread whose ID is specified in I<pid>.  If "
5813 "I<pid> equals zero, the scheduling policy and attributes of the calling "
5814 "thread will be retrieved."
5815 msgstr ""
5816 "B<sched_getattr>() システムコールは、 I<pid> で指定された ID を持つスレッドの"
5817 "スケジューリングポリシーと関連する属性を取得する。 I<pid> が 0 の場合、呼び出"
5818 "したスレッド自身のスケジューリングポリシーと関連する属性を取得する。"
5819
5820 #. type: Plain text
5821 #: build/C/man2/sched_setattr.2:270
5822 msgid ""
5823 "The I<size> argument should be set to the size of the I<sched_attr> "
5824 "structure as known to user space.  The value must be at least as large as "
5825 "the size of the initially published I<sched_attr> structure, or the call "
5826 "fails with the error B<EINVAL>."
5827 msgstr ""
5828 "I<size> 引き数には、 ユーザー空間での I<sched_attr> 構造体の大きさを設定す"
5829 "る。 この値は、 少なくとも初期バージョンの I<sched_attr> 構造体のサイズでなけ"
5830 "ればならない。 そうでなかった場合、 エラー B<EINVAL> で呼び出しが失敗する。"
5831
5832 #. type: Plain text
5833 #: build/C/man2/sched_setattr.2:280
5834 msgid ""
5835 "The retrieved scheduling attributes are placed in the fields of the "
5836 "I<sched_attr> structure pointed to by I<attr>.  The kernel sets I<attr.size> "
5837 "to the size of its I<sched_attr> structure."
5838 msgstr ""
5839 "取得したスケジューリング属性は、 I<attr> が指す I<sched_attr> 構造体の各"
5840 "フィールドに格納される。 カーネルは I<attr.size> に I<sched_attr> 構造体のサ"
5841 "イズを設定する。"
5842
5843 #. type: Plain text
5844 #: build/C/man2/sched_setattr.2:294
5845 #, fuzzy
5846 #| msgid ""
5847 #| "If the caller-provided I<attr> buffer is larger than the kernel's "
5848 #| "I<sched_attr> structure, the additional bytes in the user-space structure "
5849 #| "are not touched.  If the caller-provided structure is smaller than the "
5850 #| "kernel I<sched_attr> structure and the kernel needs to return values "
5851 #| "outside the provided space, B<sched_getattr>()  fails with the error "
5852 #| "B<E2BIG>.  As with B<sched_setattr>(), these semantics allow for future "
5853 #| "extensibility of the interface."
5854 msgid ""
5855 "If the caller-provided I<attr> buffer is larger than the kernel's "
5856 "I<sched_attr> structure, the additional bytes in the user-space structure "
5857 "are not touched.  If the caller-provided structure is smaller than the "
5858 "kernel I<sched_attr> structure, the kernel will silently not return any "
5859 "values which would be stored outside the provided space.  As with "
5860 "B<sched_setattr>(), these semantics allow for future extensibility of the "
5861 "interface."
5862 msgstr ""
5863 "呼び出し側が提供した I<attr> バッファーがカーネルの I<sched_attr> 構造体より"
5864 "も大きい場合、 ユーザー空間構造体の残りのバイトは変更されない。 呼び出し側が"
5865 "提供した構造体がカーネルの I<sched_attr> 構造体よりも小さく、 カーネルが値を"
5866 "返すのにもっと大きな空間が必要な場合、 B<sched_getattr>() はエラー B<E2BIG> "
5867 "で失敗する。 B<sched_setattr>() と同様、 この動作はこのインターフェースの将来"
5868 "の拡張性を考慮してのものである。"
5869
5870 #. type: Plain text
5871 #: build/C/man2/sched_setattr.2:308
5872 msgid ""
5873 "On success, B<sched_setattr>()  and B<sched_getattr>()  return 0.  On error, "
5874 "-1 is returned, and I<errno> is set to indicate the cause of the error."
5875 msgstr ""
5876 "成功した場合は B<sched_setattr>()  と B<sched_getattr>()  は 0 を返す。 エ"
5877 "ラーの場合は -1 が返され、 エラーの原因を示す値が I<errno> に設定される。"
5878
5879 #. type: Plain text
5880 #: build/C/man2/sched_setattr.2:313
5881 msgid ""
5882 "B<sched_getattr>()  and B<sched_setattr>()  can both fail for the following "
5883 "reasons:"
5884 msgstr ""
5885 "B<sched_getattr>() と B<sched_setattr>() の両方が以下の理由で失敗する。"
5886
5887 #. type: Plain text
5888 #: build/C/man2/sched_setattr.2:321
5889 msgid "I<attr> is NULL; or I<pid> is negative; or I<flags> is not zero."
5890 msgstr ""
5891 "I<attr> が NULL である。 I<pid> が負である。 I<flags> が 0 以外である。"
5892
5893 #. type: Plain text
5894 #: build/C/man2/sched_setattr.2:330
5895 msgid "In addition, B<sched_getattr>()  can fail for the following reasons:"
5896 msgstr "さらに、 B<sched_getattr>() は以下の理由でも失敗する。"
5897
5898 #. type: TP
5899 #: build/C/man2/sched_setattr.2:330 build/C/man2/sched_setattr.2:347
5900 #, no-wrap
5901 msgid "B<E2BIG>"
5902 msgstr "B<E2BIG>"
5903
5904 #. type: Plain text
5905 #: build/C/man2/sched_setattr.2:337
5906 msgid "The buffer specified by I<size> and I<attr> is too small."
5907 msgstr "I<size> と I<attr> で指定されたバッファーが小さすぎる。"
5908
5909 #. type: Plain text
5910 #: build/C/man2/sched_setattr.2:343
5911 msgid ""
5912 "I<size> is invalid; that is, it is smaller than the initial version of the "
5913 "I<sched_attr> structure (48 bytes) or larger than the system page size."
5914 msgstr ""
5915 "I<size> が無効である。つまり、 最初のバージョンの I<sched_attr> 構造体 (48 バ"
5916 "イト) よりも小さいか、 システムのページサイズよりも大きい。"
5917
5918 #. type: Plain text
5919 #: build/C/man2/sched_setattr.2:347
5920 msgid "In addition, B<sched_setattr>()  can fail for the following reasons:"
5921 msgstr "さらに、 B<sched_setattr>() は以下の理由でも失敗する。"
5922
5923 #. type: Plain text
5924 #: build/C/man2/sched_setattr.2:355
5925 msgid ""
5926 "The buffer specified by I<size> and I<attr> is larger than the kernel "
5927 "structure, and one or more of the excess bytes is nonzero."
5928 msgstr ""
5929 "I<size> と I<attr> で指定されたバッファーがカーネル構造体よりも大きく、 一つ"
5930 "以上の超過バイトが 0 でなかった。"
5931
5932 #. type: TP
5933 #: build/C/man2/sched_setattr.2:355
5934 #, no-wrap
5935 msgid "B<EBUSY>"
5936 msgstr "B<EBUSY>"
5937
5938 #. type: Plain text
5939 #: build/C/man2/sched_setattr.2:360
5940 msgid "B<SCHED_DEADLINE> admission control failure, see B<sched>(7)."
5941 msgstr "B<SCHED_DEADLINE> の流入制御の失敗については B<sched>(7) を参照。"
5942
5943 #. type: Plain text
5944 #: build/C/man2/sched_setattr.2:376
5945 msgid ""
5946 "I<attr.sched_policy> is not one of the recognized policies; I<attr."
5947 "sched_flags> contains a flag other than B<SCHED_FLAG_RESET_ON_FORK>; or "
5948 "I<attr.sched_priority> is invalid; or I<attr.sched_policy> is "
5949 "B<SCHED_DEADLINE> and the deadline scheduling parameters in I<attr> are "
5950 "invalid."
5951 msgstr ""
5952 "I<attr.sched_policy> が認識できるポリシーではない。 I<attr.sched_flags> に "
5953 "B<SCHED_FLAG_RESET_ON_FORK> 以外のフラグが含まれている。 I<attr."
5954 "sched_priority> が無効である。 I<attr.sched_policy> が B<SCHED_DEADLINE> "
5955 "で、 I<attr> に指定されたデッドラインスケジューリングパラメーターが無効であ"
5956 "る。"
5957
5958 #. type: Plain text
5959 #: build/C/man2/sched_setattr.2:379
5960 msgid "The caller does not have appropriate privileges."
5961 msgstr "呼び出した元が適切な特権を持っていない。"
5962
5963 #. type: Plain text
5964 #: build/C/man2/sched_setattr.2:386
5965 msgid ""
5966 "The CPU affinity mask of the thread specified by I<pid> does not include all "
5967 "CPUs in the system (see B<sched_setaffinity>(2))."
5968 msgstr "I<pid> で指定されたスレッドの CPU affinity マスクにシステムの全ての CPU のうち含まれていないものがある (B<sched_setaffinity>(2) を参照)。"
5969
5970 #.  FIXME . Add glibc version
5971 #. type: Plain text
5972 #: build/C/man2/sched_setattr.2:389
5973 msgid "These system calls first appeared in Linux 3.14."
5974 msgstr "これらのシステムコールは Linux 3.14 で初めて登場した。"
5975
5976 #. type: Plain text
5977 #: build/C/man2/sched_setattr.2:391
5978 msgid "These system calls are nonstandard Linux extensions."
5979 msgstr "これらのシステムコールは非標準の Linux による拡張である。"
5980
5981 #. type: Plain text
5982 #: build/C/man2/sched_setattr.2:407
5983 msgid ""
5984 "B<sched_setattr>()  provides a superset of the functionality of "
5985 "B<sched_setscheduler>(2), B<sched_setparam>(2), B<nice>(2), and (other than "
5986 "the ability to set the priority of all processes belonging to a specified "
5987 "user or all processes in a specified group)  B<setpriority>(2).  "
5988 "Analogously, B<sched_getattr>()  provides a superset of the functionality of "
5989 "B<sched_getscheduler>(2), B<sched_getparam>(2), and (partially)  "
5990 "B<getpriority>(2)."
5991 msgstr ""
5992 "B<sched_setattr>() は、B<sched_setscheduler>(2), B<sched_setparam>(2), "
5993 "B<nice>(2) の機能および B<setpriority> の一部機能を持つ (ただし、"
5994 "B<setpriority>(2) の、指定されたユーザーに所属するすべてのプロセスまたは指定"
5995 "されたグループのすべてのプロセスの優先度を設定する機能は除く)。 同様に、 "
5996 "B<sched_getattr>() は B<sched_getscheduler>(2), B<sched_getparam>(2) の機能お"
5997 "よび B<getpriority>(2) の一部機能を持つ。"
5998
5999 #.  FIXME . patch sent to Peter Zijlstra
6000 #. type: Plain text
6001 #: build/C/man2/sched_setattr.2:417
6002 msgid ""
6003 "In Linux versions up to 3.15, B<sched_setattr>()  failed with the error "
6004 "B<EFAULT> instead of B<E2BIG> for the case described in ERRORS."
6005 msgstr "バージョン 3.15 までの Linux では、 B<sched_setattr>() は、 エラーの節に書かれている B<E2BIG> の場合にエラーB<EFAULT> で失敗していた。"
6006
6007 #.  In Linux versions up to up 3.15,
6008 #.  FIXME . patch from Peter Zijlstra pending
6009 #.  .BR sched_setattr ()
6010 #.  allowed a negative
6011 #.  .I attr.sched_policy
6012 #.  value.
6013 #. type: Plain text
6014 #: build/C/man2/sched_setattr.2:433
6015 #, fuzzy
6016 #| msgid ""
6017 #| "In Linux versions up to 3.15, B<sched_settattr>()  failed with the error "
6018 #| "B<EFAULT> instead of B<E2BIG> for the case described in ERRORS."
6019 msgid ""
6020 "In Linux versions up to 5.3, B<sched_getattr>()  failed with the error "
6021 "B<EFBIG> if the in-kernel I<sched_attr> structure was larger than the "
6022 "I<size> passed by user space."
6023 msgstr ""
6024 "バージョン 3.15 までの Linux では、 B<sched_settattr>() は、 エラーの節に書か"
6025 "れている B<E2BIG> の場合にエラーB<EFAULT> で失敗していた。"
6026
6027 #. type: Plain text
6028 #: build/C/man2/sched_setattr.2:455
6029 msgid ""
6030 "B<chrt>(1), B<nice>(2), B<sched_get_priority_max>(2), "
6031 "B<sched_get_priority_min>(2), B<sched_getaffinity>(2), B<sched_getparam>(2), "
6032 "B<sched_getscheduler>(2), B<sched_rr_get_interval>(2), "
6033 "B<sched_setaffinity>(2), B<sched_setparam>(2), B<sched_setscheduler>(2), "
6034 "B<sched_yield>(2), B<setpriority>(2), B<pthread_getschedparam>(3), "
6035 "B<pthread_setschedparam>(3), B<pthread_setschedprio>(3), B<capabilities>(7), "
6036 "B<cpuset>(7), B<sched>(7)"
6037 msgstr " B<chrt>(1), B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), B<sched_getaffinity>(2), B<sched_getparam>(2), B<sched_getscheduler>(2), B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), B<sched_setparam>(2), B<sched_setscheduler>(2), B<sched_yield>(2), B<setpriority>(2), B<pthread_getschedparam>(3), B<pthread_setschedparam>(3), B<pthread_setschedprio>(3), B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
6038
6039 #. type: TH
6040 #: build/C/man2/sched_setparam.2:30
6041 #, no-wrap
6042 msgid "SCHED_SETPARAM"
6043 msgstr "SCHED_SETPARAM"
6044
6045 #. type: TH
6046 #: build/C/man2/sched_setparam.2:30
6047 #, no-wrap
6048 msgid "2019-10-10"
6049 msgstr " 2019-10-10"
6050
6051 #. type: Plain text
6052 #: build/C/man2/sched_setparam.2:33
6053 msgid "sched_setparam, sched_getparam - set and get scheduling parameters"
6054 msgstr ""
6055 "sched_setparam, sched_getparam - スケジューリングパラメーターの設定と取得を行"
6056 "なう"
6057
6058 #. type: Plain text
6059 #: build/C/man2/sched_setparam.2:38
6060 #, no-wrap
6061 msgid "B<int sched_setparam(pid_t >I<pid>B<, const struct sched_param *>I<param>B<);>\n"
6062 msgstr "B<int sched_setparam(pid_t >I<pid>B<, const struct sched_param *>I<param>B<);>\n"
6063
6064 #. type: Plain text
6065 #: build/C/man2/sched_setparam.2:40
6066 #, no-wrap
6067 msgid "B<int sched_getparam(pid_t >I<pid>B<, struct sched_param *>I<param>B<);>\n"
6068 msgstr "B<int sched_getparam(pid_t >I<pid>B<, struct sched_param *>I<param>B<);>\n"
6069
6070 #. type: Plain text
6071 #: build/C/man2/sched_setparam.2:46
6072 #, no-wrap
6073 msgid ""
6074 "B<struct sched_param {\n"
6075 "    ...\n"
6076 "    int >I<sched_priority>B<;\n"
6077 "    ...\n"
6078 "};>\n"
6079 msgstr ""
6080 "B<struct sched_param {\n"
6081 "    ...\n"
6082 "    int >I<sched_priority>B<;\n"
6083 "    ...\n"
6084 "};>\n"
6085
6086 #. type: Plain text
6087 #: build/C/man2/sched_setparam.2:60
6088 #, fuzzy
6089 #| msgid ""
6090 #| "B<sched_setparam>()  sets the scheduling parameters associated with the "
6091 #| "scheduling policy for the process identified by I<pid>.  If I<pid> is "
6092 #| "zero, then the parameters of the calling process are set.  The "
6093 #| "interpretation of the argument I<param> depends on the scheduling policy "
6094 #| "of the process identified by I<pid>.  See B<sched>(7)  for a description "
6095 #| "of the scheduling policies supported under Linux."
6096 msgid ""
6097 "B<sched_setparam>()  sets the scheduling parameters associated with the "
6098 "scheduling policy for the thread whose thread ID is specified in I<pid>.  If "
6099 "I<pid> is zero, then the parameters of the calling thread are set.  The "
6100 "interpretation of the argument I<param> depends on the scheduling policy of "
6101 "the thread identified by I<pid>.  See B<sched>(7)  for a description of the "
6102 "scheduling policies supported under Linux."
6103 msgstr ""
6104 "B<sched_setparam>()  は I<pid> で指定されたプロセスのスケジューリング方針 "
6105 "(scheduling policy) に 関連するスケジューリングパラメーターを設定する。 "
6106 "I<pid> が 0 ならば、呼び出し元のプロセスのパラメーターが設定される。 引き数 "
6107 "I<param> の解釈は、 I<pid> で指定されたプロセスのスケジューリング方針によって"
6108 "異なる。 Linux でサポートされているスケジューリング方針の説明は B<sched>(7)  "
6109 "を参照のこと。"
6110
6111 #. type: Plain text
6112 #: build/C/man2/sched_setparam.2:66
6113 msgid ""
6114 "B<sched_getparam>()  retrieves the scheduling parameters for the thread "
6115 "identified by I<pid>.  If I<pid> is zero, then the parameters of the calling "
6116 "thread are retrieved."
6117 msgstr "B<sched_getparam>()  は I<pid> で指定されたスレッドのスケジューリングパラメーターを取得する。 I<pid> が 0 ならば、呼び出し元のスレッドのパラメーターを取得する。"
6118
6119 #. type: Plain text
6120 #: build/C/man2/sched_setparam.2:75
6121 msgid ""
6122 "B<sched_setparam>()  checks the validity of I<param> for the scheduling "
6123 "policy of the thread.  The value I<param-E<gt>sched_priority> must lie "
6124 "within the range given by B<sched_get_priority_min>(2)  and "
6125 "B<sched_get_priority_max>(2)."
6126 msgstr ""
6127 "B<sched_setparam>()  はスレッドのスケジューリング方針における I<param> の妥当"
6128 "性をチェックする。 I<param-E<gt>sched_priority> の値は "
6129 "B<sched_get_priority_min>(2)  と B<sched_get_priority_max>(2)  の範囲に入って"
6130 "いなければならない。"
6131
6132 #. type: Plain text
6133 #: build/C/man2/sched_setparam.2:79
6134 msgid ""
6135 "For a discussion of the privileges and resource limits related to scheduling "
6136 "priority and policy, see B<sched>(7)."
6137 msgstr ""
6138 "スケジューリングの優先度と方針に関連する特権とリソース制限の 議論に関しては "
6139 "B<sched>(7)  を参照のこと。"
6140
6141 #. type: Plain text
6142 #: build/C/man2/sched_setparam.2:87
6143 msgid ""
6144 "POSIX systems on which B<sched_setparam>()  and B<sched_getparam>()  are "
6145 "available define B<_POSIX_PRIORITY_SCHEDULING> in I<E<lt>unistd.hE<gt>>."
6146 msgstr ""
6147 "B<sched_setparam>()  と B<sched_getparam>()  が使用できる POSIX システムで"
6148 "は、 I<E<lt>unistd.hE<gt>> に B<_POSIX_PRIORITY_SCHEDULING> が定義されてい"
6149 "る。"
6150
6151 #. type: Plain text
6152 #: build/C/man2/sched_setparam.2:96
6153 msgid ""
6154 "On success, B<sched_setparam>()  and B<sched_getparam>()  return 0.  On "
6155 "error, -1 is returned, and I<errno> is set appropriately."
6156 msgstr ""
6157 "成功した場合は B<sched_setparam>()  と B<sched_getparam>()  は 0 を返す。 エ"
6158 "ラーの場合は -1 が返され、 I<errno> が適切に設定される。"
6159
6160 #. type: Plain text
6161 #: build/C/man2/sched_setparam.2:104
6162 msgid "Invalid arguments: I<param> is NULL or I<pid> is negative"
6163 msgstr "無効な引き数: I<param> が NULL である、または I<pid> が負である。"
6164
6165 #. type: Plain text
6166 #: build/C/man2/sched_setparam.2:109
6167 msgid ""
6168 "(B<sched_setparam>())  The argument I<param> does not make sense for the "
6169 "current scheduling policy."
6170 msgstr ""
6171 "(B<sched_setparam>()) 引き数 I<param> が現在のスケジューリング方針においては "
6172 "無意味である。"
6173
6174 #. type: Plain text
6175 #: build/C/man2/sched_setparam.2:116
6176 msgid ""
6177 "(B<sched_setparam>())  The caller does not have appropriate privileges "
6178 "(Linux: does not have the B<CAP_SYS_NICE> capability)."
6179 msgstr "(B<sched_setparam>()) 呼び出し元が適切な特権を持っていない (Linux では、 B<CAP_SYS_NICE> ケーパビリティを持っていない)。"
6180
6181 #. type: Plain text
6182 #: build/C/man2/sched_setparam.2:137
6183 msgid ""
6184 "B<getpriority>(2), B<gettid>(2), B<nice>(2), B<sched_get_priority_max>(2), "
6185 "B<sched_get_priority_min>(2), B<sched_getaffinity>(2), "
6186 "B<sched_getscheduler>(2), B<sched_setaffinity>(2), B<sched_setattr>(2), "
6187 "B<sched_setscheduler>(2), B<setpriority>(2), B<capabilities>(7), B<sched>(7)"
6188 msgstr " B<getpriority>(2), B<gettid>(2), B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), B<sched_getaffinity>(2), B<sched_getscheduler>(2), B<sched_setaffinity>(2), B<sched_setattr>(2), B<sched_setscheduler>(2), B<setpriority>(2), B<capabilities>(7), B<sched>(7)"
6189
6190 #. type: TH
6191 #: build/C/man2/sched_setscheduler.2:26
6192 #, no-wrap
6193 msgid "SCHED_SETSCHEDULER"
6194 msgstr "SCHED_SETSCHEDULER"
6195
6196 #. type: Plain text
6197 #: build/C/man2/sched_setscheduler.2:30
6198 msgid ""
6199 "sched_setscheduler, sched_getscheduler - set and get scheduling policy/"
6200 "parameters"
6201 msgstr ""
6202 "sched_setscheduler, sched_getscheduler - スケジューリングポリシーとパラメー"
6203 "ターを設定/取得する"
6204
6205 #. type: Plain text
6206 #: build/C/man2/sched_setscheduler.2:36
6207 #, no-wrap
6208 msgid ""
6209 "B<int sched_setscheduler(pid_t >I<pid>B<, int >I<policy>B<,>\n"
6210 "B<                       const struct sched_param *>I<param>B<);>\n"
6211 msgstr ""
6212 " B<int sched_setscheduler(pid_t >I<pid>B<, int >I<policy>B<,>\n"
6213 "B<                       const struct sched_param *>I<param>B<);>\n"
6214
6215 #. type: Plain text
6216 #: build/C/man2/sched_setscheduler.2:38
6217 #, no-wrap
6218 msgid "B<int sched_getscheduler(pid_t >I<pid>B<);>\n"
6219 msgstr "B<int sched_getscheduler(pid_t >I<pid>B<);>\n"
6220
6221 #. type: Plain text
6222 #: build/C/man2/sched_setscheduler.2:47
6223 msgid ""
6224 "The B<sched_setscheduler>()  system call sets both the scheduling policy and "
6225 "parameters for the thread whose ID is specified in I<pid>.  If I<pid> equals "
6226 "zero, the scheduling policy and parameters of the calling thread will be set."
6227 msgstr ""
6228 "B<sched_setscheduler>() システムコールは、 I<pid> で指定された ID を持つス"
6229 "レッドのスケジューリングポリシーとスケジューリングパラメーターの両方を設定す"
6230 "る。 I<pid> が 0 の場合、呼び出したスレッド自身のスケジューリングポリシーとス"
6231 "ケジューリングパラメーターが設定される。"
6232
6233 #. type: Plain text
6234 #: build/C/man2/sched_setscheduler.2:51
6235 msgid ""
6236 "The scheduling parameters are specified in the I<param> argument, which is a "
6237 "pointer to a structure of the following form:"
6238 msgstr ""
6239 "スケジューリングパラメーターは I<param> 引き数で、以下の形式の構造体へのポイ"
6240 "ンターを指定する。"
6241
6242 #. type: Plain text
6243 #: build/C/man2/sched_setscheduler.2:59
6244 #, no-wrap
6245 msgid ""
6246 "struct sched_param {\n"
6247 "    ...\n"
6248 "    int sched_priority;\n"
6249 "    ...\n"
6250 "};\n"
6251 msgstr ""
6252 "struct sched_param {\n"
6253 "    ...\n"
6254 "    int sched_priority;\n"
6255 "    ...\n"
6256 "};\n"
6257
6258 #. type: Plain text
6259 #: build/C/man2/sched_setscheduler.2:67
6260 msgid ""
6261 "In the current implementation, the structure contains only one field, "
6262 "I<sched_priority>.  The interpretation of I<param> depends on the selected "
6263 "policy."
6264 msgstr ""
6265 "現在の実装では、この構造体のフィールドは I<sched_priority> だけである。 "
6266 "I<param> がどのように解釈されるかは選択されたポリシーによって変わる。"
6267
6268 #. type: Plain text
6269 #: build/C/man2/sched_setscheduler.2:88
6270 msgid "For each of the above policies, I<param-E<gt>sched_priority> must be 0."
6271 msgstr ""
6272 "上記のどのポリシーの場合でも、 I<param-E<gt>sched_priority> は 0 でなければな"
6273 "らない。"
6274
6275 #. type: Plain text
6276 #: build/C/man2/sched_setscheduler.2:114
6277 msgid ""
6278 "For each of the above policies, I<param-E<gt>sched_priority> specifies a "
6279 "scheduling priority for the thread.  This is a number in the range returned "
6280 "by calling B<sched_get_priority_min>(2)  and B<sched_get_priority_max>(2)  "
6281 "with the specified I<policy>.  On Linux, these system calls return, "
6282 "respectively, 1 and 99."
6283 msgstr ""
6284 "上記のどのポリシーの場合でも、 I<param-E<gt>sched_priority> はそのスレッドの"
6285 "スケジューリングポリシーを指定する。 指定された I<policy> で "
6286 "I<sched_get_priority_min>(2) と I<sched_get_priority_max>(2) を呼び出した返り"
6287 "値の範囲の数字を指定する。 Linux では、これらのシステムコールはそれぞれ 1 と "
6288 "99 を返す。"
6289
6290 #. type: Plain text
6291 #: build/C/man2/sched_setscheduler.2:127
6292 msgid ""
6293 "Since Linux 2.6.32, the B<SCHED_RESET_ON_FORK> flag can be ORed in I<policy> "
6294 "when calling B<sched_setscheduler>().  As a result of including this flag, "
6295 "children created by B<fork>(2)  do not inherit privileged scheduling "
6296 "policies.  See B<sched>(7)  for details."
6297 msgstr ""
6298 "Linux 2.6.32 以降では、 B<sched_setscheduler>() を呼び出す際に I<policy> に "
6299 "B<SCHED_RESET_ON_FORK> フラグを OR で指定できる。このフラグが指定されると、 "
6300 "B<fork>(2) で作成された子プロセスは特権が必要なスケジューリングポリシーを継承"
6301 "しない。 詳細は B<sched>(7) を参照。"
6302
6303 #. type: Plain text
6304 #: build/C/man2/sched_setscheduler.2:133
6305 msgid ""
6306 "B<sched_getscheduler>()  returns the current scheduling policy of the thread "
6307 "identified by I<pid>.  If I<pid> equals zero, the policy of the calling "
6308 "thread will be retrieved."
6309 msgstr ""
6310 "B<sched_getscheduler>()  は I<pid> で識別されるスレッドの現在のスケジューリン"
6311 "グポリシーを返す。I<pid> が 0 ならば、呼び出した スレッド自身のスケジューリン"
6312 "グポリシーが返される。"
6313
6314 #. type: Plain text
6315 #: build/C/man2/sched_setscheduler.2:143
6316 msgid ""
6317 "On success, B<sched_setscheduler>()  returns zero.  On success, "
6318 "B<sched_getscheduler>()  returns the policy for the thread (a nonnegative "
6319 "integer).  On error, both calls return -1, and I<errno> is set appropriately."
6320 msgstr ""
6321 "成功した場合、 B<sched_setscheduler>()  は 0 を返す。 成功した場合、 "
6322 "B<sched_getscheduler>()  は現在のそのスレッドのポリシー (非負の整数) を返"
6323 "す。 エラーの場合、 どちらのコールも -1 を返し、 I<errno> が適切に設定され"
6324 "る。"
6325
6326 #. type: Plain text
6327 #: build/C/man2/sched_setscheduler.2:151
6328 msgid "Invalid arguments: I<pid> is negative or I<param> is NULL."
6329 msgstr "無効な引き数: I<pid> が負である、または I<param> が NULL である。"
6330
6331 #. type: Plain text
6332 #: build/C/man2/sched_setscheduler.2:156
6333 msgid ""
6334 "(B<sched_setscheduler>())  I<policy> is not one of the recognized policies."
6335 msgstr "(B<sched_setscheduler>()) I<policy> が認識できるポリシーではない。"
6336
6337 #. type: Plain text
6338 #: build/C/man2/sched_setscheduler.2:162
6339 msgid ""
6340 "(B<sched_setscheduler>())  I<param> does not make sense for the specified "
6341 "I<policy>."
6342 msgstr ""
6343 "(B<sched_setscheduler>()) 引き数 I<param> が指定された I<policy> では意味を持"
6344 "たない。"
6345
6346 #. type: Plain text
6347 #: build/C/man2/sched_setscheduler.2:165
6348 msgid "The calling thread does not have appropriate privileges."
6349 msgstr "呼び出したスレッドが適切な特権を持っていない。"
6350
6351 #. type: Plain text
6352 #: build/C/man2/sched_setscheduler.2:171
6353 msgid ""
6354 "POSIX.1-2001, POSIX.1-2008 (but see BUGS below).  The B<SCHED_BATCH> and "
6355 "B<SCHED_IDLE> policies are Linux-specific."
6356 msgstr "POSIX.1-2001, POSIX.1-2008 (但し、下記のバグの節も参照)。 B<SCHED_BATCH> と B<SCHED_IDLE> ポリシーは Linux 固有である。"
6357
6358 #. type: Plain text
6359 #: build/C/man2/sched_setscheduler.2:180
6360 #, fuzzy
6361 #| msgid ""
6362 #| "Further details of the semantics of all of the above \"normal\" and "
6363 #| "\"real-time\" scheduling policies can be found in B<sched>(7)."
6364 msgid ""
6365 "Further details of the semantics of all of the above \"normal\" and \"real-"
6366 "time\" scheduling policies can be found in the B<sched>(7)  manual page.  "
6367 "That page also describes an additional policy, B<SCHED_DEADLINE>, which is "
6368 "settable only via B<sched_setattr>(2)."
6369 msgstr ""
6370 "上記の「通常」および「リアルタイム」スケジューリングポリシーの動作の詳細な説"
6371 "明は B<sched>(7) にある。"
6372
6373 #. type: Plain text
6374 #: build/C/man2/sched_setscheduler.2:188
6375 msgid ""
6376 "POSIX systems on which B<sched_setscheduler>()  and B<sched_getscheduler>()  "
6377 "are available define B<_POSIX_PRIORITY_SCHEDULING> in I<E<lt>unistd.hE<gt>>."
6378 msgstr ""
6379 "POSIX システムでは I<E<lt>unistd.hE<gt>> に B<_POSIX_PRIORITY_SCHEDULING> が"
6380 "定義されている場合にのみ B<sched_setscheduler>()  と "
6381 "B<sched_getscheduler>()  が使用できる。"
6382
6383 #. type: Plain text
6384 #: build/C/man2/sched_setscheduler.2:196
6385 msgid ""
6386 "POSIX.1 does not detail the permissions that an unprivileged thread requires "
6387 "in order to call B<sched_setscheduler>(), and details vary across systems.  "
6388 "For example, the Solaris 7 manual page says that the real or effective user "
6389 "ID of the caller must match the real user ID or the save set-user-ID of the "
6390 "target."
6391 msgstr ""
6392 "POSIX.1 は、非特権スレッドが B<sched_setscheduler>()  を呼び出すために必要な"
6393 "権限の詳細を規定しておらず、 詳細はシステムにより異なる。 例えば、Solaris 7 "
6394 "のマニュアルページでは、 呼び出し元の実ユーザー ID または実効ユーザー ID が "
6395 "設定対象の実ユーザー ID か保存 (save) set-user-ID と 一致していなければならな"
6396 "い、となっている。"
6397
6398 #. type: Plain text
6399 #: build/C/man2/sched_setscheduler.2:217
6400 msgid ""
6401 "The scheduling policy and parameters are in fact per-thread attributes on "
6402 "Linux.  The value returned from a call to B<gettid>(2)  can be passed in the "
6403 "argument I<pid>.  Specifying I<pid> as 0 will operate on the attributes of "
6404 "the calling thread, and passing the value returned from a call to "
6405 "B<getpid>(2)  will operate on the attributes of the main thread of the "
6406 "thread group.  (If you are using the POSIX threads API, then use "
6407 "B<pthread_setschedparam>(3), B<pthread_getschedparam>(3), and "
6408 "B<pthread_setschedprio>(3), instead of the B<sched_*>(2)  system calls.)"
6409 msgstr ""
6410 "Linux では、 スケジューリングポリシーとスケジューリングパラメーターは、 実際"
6411 "にはスレッド単位の属性である。 B<gettid>(2) の呼び出しの返り値をこのシステム"
6412 "コールの I<pid> 引き数として渡すことができる。 I<pid> に 0 を指定すると、 呼"
6413 "び出し元のスレッドの属性が設定される。 B<getpid>(2) コールからの返り値を "
6414 "I<pid> に指定すると、 スレッドグループのメインスレッドの属性が設定される "
6415 "(POSIX スレッド API を使用している場合は、 B<sched_*>(2) システムコールの代わ"
6416 "りに B<pthread_setschedparam>(3), B<pthread_getschedparam>(3), and "
6417 "B<pthread_setschedprio>(3) を使用すること)。"
6418
6419 #. type: Plain text
6420 #: build/C/man2/sched_setscheduler.2:225
6421 msgid ""
6422 "POSIX.1 says that on success, B<sched_setscheduler>()  should return the "
6423 "previous scheduling policy.  Linux B<sched_setscheduler>()  does not conform "
6424 "to this requirement, since it always returns 0 on success."
6425 msgstr "POSIX.1 では、成功時に B<sched_setscheduler>()  は直前のスケジューリングポリシーを返すべきとされている。 Linux の B<sched_setscheduler>()  はこの要求仕様に準拠しておらず、 成功時には常に 0 を返す。"
6426
6427 #. type: Plain text
6428 #: build/C/man2/sched_setscheduler.2:244
6429 msgid ""
6430 "B<chrt>(1), B<nice>(2), B<sched_get_priority_max>(2), "
6431 "B<sched_get_priority_min>(2), B<sched_getaffinity>(2), B<sched_getattr>(2), "
6432 "B<sched_getparam>(2), B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), "
6433 "B<sched_setattr>(2), B<sched_setparam>(2), B<sched_yield>(2), "
6434 "B<setpriority>(2), B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
6435 msgstr ""
6436 "B<chrt>(1), B<nice>(2), B<sched_get_priority_max>(2), "
6437 "B<sched_get_priority_min>(2), B<sched_getaffinity>(2), B<sched_getattr>(2), "
6438 "B<sched_getparam>(2), B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), "
6439 "B<sched_setattr>(2), B<sched_setparam>(2), B<sched_yield>(2), "
6440 "B<setpriority>(2), B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
6441
6442 #. type: TH
6443 #: build/C/man2/sched_yield.2:29
6444 #, no-wrap
6445 msgid "SCHED_YIELD"
6446 msgstr "SCHED_YIELD"
6447
6448 #. type: Plain text
6449 #: build/C/man2/sched_yield.2:32
6450 msgid "sched_yield - yield the processor"
6451 msgstr "sched_yield - プロセッサーを空け渡す(yield)"
6452
6453 #. type: Plain text
6454 #: build/C/man2/sched_yield.2:36
6455 msgid "B<int sched_yield(void);>"
6456 msgstr "B<int sched_yield(void);>"
6457
6458 #. type: Plain text
6459 #: build/C/man2/sched_yield.2:41
6460 msgid ""
6461 "B<sched_yield>()  causes the calling thread to relinquish the CPU.  The "
6462 "thread is moved to the end of the queue for its static priority and a new "
6463 "thread gets to run."
6464 msgstr ""
6465 "B<sched_yield>()  を呼び出すことで、呼び出したスレッドが CPU の使用権を手放す"
6466 "ことができる。 そのスレッドは、そのスレッドの静的プライオリティのキューの末尾"
6467 "に 移動し、新しいスレッドが走り始める。"
6468
6469 #. type: Plain text
6470 #: build/C/man2/sched_yield.2:48
6471 msgid ""
6472 "On success, B<sched_yield>()  returns 0.  On error, -1 is returned, and "
6473 "I<errno> is set appropriately."
6474 msgstr ""
6475 "成功した場合は B<sched_yield>()  は 0 を返す。 エラーの場合は -1 が返され、 "
6476 "I<errno> が適切に設定される。"
6477
6478 #. type: Plain text
6479 #: build/C/man2/sched_yield.2:52
6480 msgid "In the Linux implementation, B<sched_yield>()  always succeeds."
6481 msgstr "Linux の実装では、 B<sched_yield>()  は常に成功する。"
6482
6483 #. type: Plain text
6484 #: build/C/man2/sched_yield.2:59
6485 msgid ""
6486 "If the calling thread is the only thread in the highest priority list at "
6487 "that time, it will continue to run after a call to B<sched_yield>()."
6488 msgstr ""
6489 "B<sched_yield>()  を呼び出した時点で最大優先度のリストの中に呼び出し元のス"
6490 "レッドしか 存在しなければ、そのスレッドは呼び出し後も走り続けることになる。"
6491
6492 #. type: Plain text
6493 #: build/C/man2/sched_yield.2:66
6494 msgid ""
6495 "POSIX systems on which B<sched_yield>()  is available define "
6496 "B<_POSIX_PRIORITY_SCHEDULING> in I<E<lt>unistd.hE<gt>>."
6497 msgstr ""
6498 "POSIX システムで B<sched_yield>()  は I<E<lt>unistd.hE<gt>> に "
6499 "B<_POSIX_PRIORITY_SCHEDULING> が定義されている場合にのみ使用可能である。"
6500
6501 #. type: Plain text
6502 #: build/C/man2/sched_yield.2:79
6503 msgid ""
6504 "Strategic calls to B<sched_yield>()  can improve performance by giving other "
6505 "threads or processes a chance to run when (heavily) contended resources (e."
6506 "g., mutexes)  have been released by the caller.  Avoid calling "
6507 "B<sched_yield>()  unnecessarily or inappropriately (e.g., when resources "
6508 "needed by other schedulable threads are still held by the caller), since "
6509 "doing so will result in unnecessary context switches, which will degrade "
6510 "system performance."
6511 msgstr ""
6512 "B<sched_yield>()  を戦略的に呼び出すことで、(極度に) 競合するリソース (mutex "
6513 "など)  を呼び出し元が解放した際に他のスレッドやプロセスに実行機会を与えること"
6514 "で、 性能を上げることができる。 B<sched_yield>()  を必要もないのに呼び出した"
6515 "り、不適切な場面 (例えば、他のスケジューリング 対象となるスレッドが必要とする"
6516 "リソースを呼び出し元が保持したままの状態)  で呼び出したりするのは避けること。"
6517 "なぜなら、 B<sched_yield>()  の呼び出しより不必要なコンテキストスイッチが起こ"
6518 "り、システム性能が 劣化する結果になるからである。"
6519
6520 #. type: Plain text
6521 #: build/C/man2/sched_yield.2:90
6522 msgid ""
6523 "B<sched_yield>()  is intended for use with real-time scheduling policies (i."
6524 "e., B<SCHED_FIFO> or B<SCHED_RR>).  Use of B<sched_yield>()  with "
6525 "nondeterministic scheduling policies such as B<SCHED_OTHER> is unspecified "
6526 "and very likely means your application design is broken."
6527 msgstr ""
6528
6529 #. type: TH
6530 #: build/C/man7/sched.7:32
6531 #, no-wrap
6532 msgid "SCHED"
6533 msgstr "SCHED"
6534
6535 #. type: TH
6536 #: build/C/man7/sched.7:32
6537 #, no-wrap
6538 msgid "2019-08-02"
6539 msgstr "2019-08-02"
6540
6541 #. type: Plain text
6542 #: build/C/man7/sched.7:35
6543 msgid "sched - overview of CPU scheduling"
6544 msgstr "sched - CPU スケジューリングの概要"
6545
6546 #. type: Plain text
6547 #: build/C/man7/sched.7:40
6548 msgid ""
6549 "Since Linux 2.6.23, the default scheduler is CFS, the \"Completely Fair "
6550 "Scheduler\".  The CFS scheduler replaced the earlier \"O(1)\" scheduler."
6551 msgstr ""
6552
6553 #. type: SS
6554 #: build/C/man7/sched.7:40
6555 #, no-wrap
6556 msgid "API summary"
6557 msgstr "API の概要"
6558
6559 #. type: Plain text
6560 #: build/C/man7/sched.7:44
6561 msgid ""
6562 "Linux provides the following system calls for controlling the CPU scheduling "
6563 "behavior, policy, and priority of processes (or, more precisely, threads)."
6564 msgstr ""
6565
6566 #. type: TP
6567 #: build/C/man7/sched.7:44
6568 #, no-wrap
6569 msgid "B<nice>(2)"
6570 msgstr ""
6571
6572 #. type: Plain text
6573 #: build/C/man7/sched.7:48
6574 msgid ""
6575 "Set a new nice value for the calling thread, and return the new nice value."
6576 msgstr ""
6577
6578 #. type: TP
6579 #: build/C/man7/sched.7:48
6580 #, no-wrap
6581 msgid "B<getpriority>(2)"
6582 msgstr " B<getpriority>(2)"
6583
6584 #. type: Plain text
6585 #: build/C/man7/sched.7:52
6586 msgid ""
6587 "Return the nice value of a thread, a process group, or the set of threads "
6588 "owned by a specified user."
6589 msgstr ""
6590
6591 #. type: TP
6592 #: build/C/man7/sched.7:52
6593 #, no-wrap
6594 msgid "B<setpriority>(2)"
6595 msgstr " B<setpriority>(2)"
6596
6597 #. type: Plain text
6598 #: build/C/man7/sched.7:56
6599 msgid ""
6600 "Set the nice value of a thread, a process group, or the set of threads owned "
6601 "by a specified user."
6602 msgstr ""
6603
6604 #. type: TP
6605 #: build/C/man7/sched.7:56
6606 #, no-wrap
6607 msgid "B<sched_setscheduler>(2)"
6608 msgstr "B<sched_setscheduler>(2)"
6609
6610 #. type: Plain text
6611 #: build/C/man7/sched.7:59
6612 msgid "Set the scheduling policy and parameters of a specified thread."
6613 msgstr "指定されたスレッドのスケジューリングポリシーとパラメーターを設定する。"
6614
6615 #. type: TP
6616 #: build/C/man7/sched.7:59
6617 #, no-wrap
6618 msgid "B<sched_getscheduler>(2)"
6619 msgstr "B<sched_getscheduler>(2)"
6620
6621 #. type: Plain text
6622 #: build/C/man7/sched.7:62
6623 msgid "Return the scheduling policy of a specified thread."
6624 msgstr "指定されたスレッドのスケジューリングポリシーを返す。"
6625
6626 #. type: TP
6627 #: build/C/man7/sched.7:62
6628 #, no-wrap
6629 msgid "B<sched_setparam>(2)"
6630 msgstr "B<sched_setparam>(2)"
6631
6632 #. type: Plain text
6633 #: build/C/man7/sched.7:65
6634 msgid "Set the scheduling parameters of a specified thread."
6635 msgstr "指定されたスレッドのスケジューリングパラメーターを設定する。"
6636
6637 #. type: TP
6638 #: build/C/man7/sched.7:65
6639 #, no-wrap
6640 msgid "B<sched_getparam>(2)"
6641 msgstr "B<sched_getparam>(2)"
6642
6643 #. type: Plain text
6644 #: build/C/man7/sched.7:68
6645 msgid "Fetch the scheduling parameters of a specified thread."
6646 msgstr "指定されたスレッドのスケジューリングパラメーターを取得する。"
6647
6648 #. type: TP
6649 #: build/C/man7/sched.7:68
6650 #, no-wrap
6651 msgid "B<sched_get_priority_max>(2)"
6652 msgstr "B<sched_get_priority_max>(2)"
6653
6654 #. type: Plain text
6655 #: build/C/man7/sched.7:71
6656 msgid "Return the maximum priority available in a specified scheduling policy."
6657 msgstr "指定されたスケジューリングポリシーで利用可能な最大の優先度を返す。"
6658
6659 #. type: TP
6660 #: build/C/man7/sched.7:71
6661 #, no-wrap
6662 msgid "B<sched_get_priority_min>(2)"
6663 msgstr "B<sched_get_priority_min>(2)"
6664
6665 #. type: Plain text
6666 #: build/C/man7/sched.7:74
6667 msgid "Return the minimum priority available in a specified scheduling policy."
6668 msgstr "指定されたスケジューリングポリシーで利用可能な最小の優先度を返す。"
6669
6670 #. type: TP
6671 #: build/C/man7/sched.7:74
6672 #, no-wrap
6673 msgid "B<sched_rr_get_interval>(2)"
6674 msgstr "B<sched_rr_get_interval>(2)"
6675
6676 #. type: Plain text
6677 #: build/C/man7/sched.7:78
6678 msgid ""
6679 "Fetch the quantum used for threads that are scheduled under the \"round-robin"
6680 "\" scheduling policy."
6681 msgstr ""
6682 "「ラウンドロビン」スケジューリングポリシーでスケジューリグされるスレッドで使"
6683 "用される単位時間 (quantum) を取得する。"
6684
6685 #. type: TP
6686 #: build/C/man7/sched.7:78
6687 #, no-wrap
6688 msgid "B<sched_yield>(2)"
6689 msgstr "B<sched_yield>(2)"
6690
6691 #. type: Plain text
6692 #: build/C/man7/sched.7:82
6693 msgid ""
6694 "Cause the caller to relinquish the CPU, so that some other thread be "
6695 "executed."
6696 msgstr ""
6697 "呼び出し元が CPU の使用権を明け渡して、 他のスレッドが実行できるようにする。"
6698
6699 #. type: TP
6700 #: build/C/man7/sched.7:82
6701 #, no-wrap
6702 msgid "B<sched_setaffinity>(2)"
6703 msgstr "B<sched_setaffinity>(2)"
6704
6705 #. type: Plain text
6706 #: build/C/man7/sched.7:86
6707 msgid "(Linux-specific)  Set the CPU affinity of a specified thread."
6708 msgstr "(Linux 固有) 指定されたスレッドの CPU affinity を設定する。"
6709
6710 #. type: TP
6711 #: build/C/man7/sched.7:86
6712 #, no-wrap
6713 msgid "B<sched_getaffinity>(2)"
6714 msgstr "B<sched_getaffinity>(2)"
6715
6716 #. type: Plain text
6717 #: build/C/man7/sched.7:90
6718 msgid "(Linux-specific)  Get the CPU affinity of a specified thread."
6719 msgstr "(Linux 固有) 指定されたスレッドの CPU affinity を取得する。"
6720
6721 #. type: TP
6722 #: build/C/man7/sched.7:90
6723 #, no-wrap
6724 msgid "B<sched_setattr>(2)"
6725 msgstr "B<sched_setattr>(2)"
6726
6727 #. type: Plain text
6728 #: build/C/man7/sched.7:97
6729 msgid ""
6730 "Set the scheduling policy and parameters of a specified thread.  This (Linux-"
6731 "specific) system call provides a superset of the functionality of "
6732 "B<sched_setscheduler>(2)  and B<sched_setparam>(2)."
6733 msgstr ""
6734 "指定されたスレッドのスケジューリングポリシーとパラメーターを設定する。 この "
6735 "(Linux 固有の) システムコールは B<sched_setscheduler>(2) と "
6736 "B<sched_setparam>(2) の両方の機能を持つ。"
6737
6738 #. type: TP
6739 #: build/C/man7/sched.7:97
6740 #, no-wrap
6741 msgid "B<sched_getattr>(2)"
6742 msgstr "B<sched_getattr>(2)"
6743
6744 #. type: Plain text
6745 #: build/C/man7/sched.7:105
6746 msgid ""
6747 "Fetch the scheduling policy and parameters of a specified thread.  This "
6748 "(Linux-specific) system call provides a superset of the functionality of "
6749 "B<sched_getscheduler>(2)  and B<sched_getparam>(2)."
6750 msgstr ""
6751 "指定されたスレッドのスケジューリングポリシーとパラメーターを取得する。 この "
6752 "(Linux 固有の) システムコールは B<sched_getscheduler>(2) と "
6753 "B<sched_getparam>(2) の両方の機能を持つ。"
6754
6755 #. type: SS
6756 #: build/C/man7/sched.7:105
6757 #, no-wrap
6758 msgid "Scheduling policies"
6759 msgstr "スケジューリングポリシー (scheduling policy)"
6760
6761 #. type: Plain text
6762 #: build/C/man7/sched.7:113
6763 msgid ""
6764 "The scheduler is the kernel component that decides which runnable thread "
6765 "will be executed by the CPU next.  Each thread has an associated scheduling "
6766 "policy and a I<static> scheduling priority, I<sched_priority>.  The "
6767 "scheduler makes its decisions based on knowledge of the scheduling policy "
6768 "and static priority of all threads on the system."
6769 msgstr ""
6770 "スケジューラ (scheduler) とはカーネルの構成要素で、 次に CPU で実行される実行"
6771 "可能なスレッドを決定するものである。 各々のスレッドには、スケジューリングポリ"
6772 "シーと 「静的」なスケジューリング優先度 I<sched_priority> が対応付けられる。 "
6773 "スケジューラは、システム上の全スレッドのスケジューリングポリシーと 静的優先度"
6774 "に関する知識に基づいて決定を行う。"
6775
6776 #. type: Plain text
6777 #: build/C/man7/sched.7:118
6778 msgid ""
6779 "For threads scheduled under one of the normal scheduling policies "
6780 "(B<SCHED_OTHER>, B<SCHED_IDLE>, B<SCHED_BATCH>), I<sched_priority> is not "
6781 "used in scheduling decisions (it must be specified as 0)."
6782 msgstr ""
6783 "通常のスケジューリングポリシー (B<SCHED_OTHER>, B<SCHED_IDLE>, "
6784 "B<SCHED_BATCH>)  の下でスケジューリングされるスレッドでは、 "
6785 "I<sched_priority> はスケジューリングの決定に使用されない (I<sched_priority> "
6786 "には 0 を指定しなければならない)。"
6787
6788 #. type: Plain text
6789 #: build/C/man7/sched.7:132
6790 msgid ""
6791 "Processes scheduled under one of the real-time policies (B<SCHED_FIFO>, "
6792 "B<SCHED_RR>) have a I<sched_priority> value in the range 1 (low) to 99 "
6793 "(high).  (As the numbers imply, real-time threads always have higher "
6794 "priority than normal threads.)  Note well: POSIX.1 requires an "
6795 "implementation to support only a minimum 32 distinct priority levels for the "
6796 "real-time policies, and some systems supply just this minimum.  Portable "
6797 "programs should use B<sched_get_priority_min>(2)  and "
6798 "B<sched_get_priority_max>(2)  to find the range of priorities supported for "
6799 "a particular policy."
6800 msgstr "リアルタイムスケジューリングポリシー (B<SCHED_FIFO>, B<SCHED_RR>)  の下でスケジューリングされるスレッドは、 I<sched_priority> の値は 1 (最低) から 99 (最高) の範囲となる (数字から分かるように、リアルタイムスレッドは常に通常のスレッドよりも 高い優先度を持つ)。 ここで注意すべきなのは、POSIX.1 が要求しているのは、 リアルタイムポリシーの実装において最低 32 種類の異なる優先度レベルが サポートされることだけであり、いくつかのシステムではこの最低限の数の 優先度しか提供されていない、ということである。 移植性が必要なプログラムでは、 B<sched_get_priority_min>(2)  と B<sched_get_priority_max>(2)  を使って、あるポリシーがサポートする優先度の範囲を調べるべきである。"
6801
6802 #. type: Plain text
6803 #: build/C/man7/sched.7:138
6804 msgid ""
6805 "Conceptually, the scheduler maintains a list of runnable threads for each "
6806 "possible I<sched_priority> value.  In order to determine which thread runs "
6807 "next, the scheduler looks for the nonempty list with the highest static "
6808 "priority and selects the thread at the head of this list."
6809 msgstr ""
6810 "概念としては、 スケジューラはその I<sched_priority> の値それぞれに対して 実行"
6811 "可能なスレッドのリストを管理している。 どのスレッドを次に実行するかを決定する"
6812 "ために、 スケジューラは静的優先度の最も高い空でないリストを探して、 そのリス"
6813 "トの先頭のスレッドを選択する。"
6814
6815 #. type: Plain text
6816 #: build/C/man7/sched.7:142
6817 msgid ""
6818 "A thread's scheduling policy determines where it will be inserted into the "
6819 "list of threads with equal static priority and how it will move inside this "
6820 "list."
6821 msgstr ""
6822 "各スレッドのスケジューリングポリシーは、 そのスレッドが同じ静的優先度を持つス"
6823 "レッドのリストの中のどこに挿入され、 このリストの中をどのように移動するかを決"
6824 "定する。"
6825
6826 #. type: Plain text
6827 #: build/C/man7/sched.7:150
6828 msgid ""
6829 "All scheduling is preemptive: if a thread with a higher static priority "
6830 "becomes ready to run, the currently running thread will be preempted and "
6831 "returned to the wait list for its static priority level.  The scheduling "
6832 "policy determines the ordering only within the list of runnable threads with "
6833 "equal static priority."
6834 msgstr ""
6835 "全てのスケジューリングはプリエンプティブ (preemptive) である: より高い優先度"
6836 "のスレッドが実行可能になると、現在実行中のスレッドは実行権を 取り上げられ "
6837 "(preempted)、そのスレッドの静的優先度レベルの待ちリストに 戻される。スケ"
6838 "ジューリングポリシーは同じ静的優先度を持つ実行可能な スレッドのリストの中で順"
6839 "番のみを決定する。"
6840
6841 #. type: SS
6842 #: build/C/man7/sched.7:150
6843 #, no-wrap
6844 msgid "SCHED_FIFO: First in-first out scheduling"
6845 msgstr "SCHED_FIFO: ファーストインファーストアウトスケジューリング"
6846
6847 #. type: Plain text
6848 #: build/C/man7/sched.7:159
6849 msgid ""
6850 "B<SCHED_FIFO> can be used only with static priorities higher than 0, which "
6851 "means that when a B<SCHED_FIFO> thread becomes runnable, it will always "
6852 "immediately preempt any currently running B<SCHED_OTHER>, B<SCHED_BATCH>, or "
6853 "B<SCHED_IDLE> thread.  B<SCHED_FIFO> is a simple scheduling algorithm "
6854 "without time slicing.  For threads scheduled under the B<SCHED_FIFO> policy, "
6855 "the following rules apply:"
6856 msgstr ""
6857 "B<SCHED_FIFO> は 0 より大きな静的優先度でのみ使用できる。このポリシーでは、 "
6858 "B<SCHED_FIFO> スレッドが実行可能になった場合、 そのポリシーが "
6859 "B<SCHED_OTHER>、 B<SCHED_BATCH>、 B<SCHED_IDLE> の 現在実行中のスレッドは直ち"
6860 "に実行権を取り上げられる。 B<SCHED_FIFO> は時分割のない単純なスケジューリング"
6861 "アルゴリズムである。 B<SCHED_FIFO> ポリシーでスケジューリングされているスレッ"
6862 "ドには以下の ルールが適用される:"
6863
6864 #. type: IP
6865 #: build/C/man7/sched.7:159
6866 #, no-wrap
6867 msgid "1)"
6868 msgstr " 1)"
6869
6870 #. type: Plain text
6871 #: build/C/man7/sched.7:164
6872 msgid ""
6873 "A running B<SCHED_FIFO> thread that has been preempted by another thread of "
6874 "higher priority will stay at the head of the list for its priority and will "
6875 "resume execution as soon as all threads of higher priority are blocked again."
6876 msgstr "より高い優先度の他のスレッドによって取って代わられた実行中の B<SCHED_FIFO> スレッドはその優先度のリストの先頭に留まり続け、 より高い優先度のスレッド全てが停止 (block) した場合に実行を再開する。"
6877
6878 #. type: IP
6879 #: build/C/man7/sched.7:164
6880 #, no-wrap
6881 msgid "2)"
6882 msgstr " 2)"
6883
6884 #. type: Plain text
6885 #: build/C/man7/sched.7:167
6886 msgid ""
6887 "When a blocked B<SCHED_FIFO> thread becomes runnable, it will be inserted at "
6888 "the end of the list for its priority."
6889 msgstr "停止された B<SCHED_FIFO> スレッドが実行可能になった時、その優先度のリストの最後 に挿入される。"
6890
6891 #. type: IP
6892 #: build/C/man7/sched.7:167
6893 #, no-wrap
6894 msgid "3)"
6895 msgstr " 3)"
6896
6897 #. type: Plain text
6898 #: build/C/man7/sched.7:181
6899 msgid ""
6900 "If a call to B<sched_setscheduler>(2), B<sched_setparam>(2), "
6901 "B<sched_setattr>(2), B<pthread_setschedparam>(3), or "
6902 "B<pthread_setschedprio>(3)  changes the priority of the running or runnable "
6903 "B<SCHED_FIFO> thread identified by I<pid> the effect on the thread's "
6904 "position in the list depends on the direction of the change to threads "
6905 "priority:"
6906 msgstr ""
6907
6908 #. type: IP
6909 #: build/C/man7/sched.7:182 build/C/man7/sched.7:187 build/C/man7/sched.7:190
6910 #: build/C/man2/setns.2:25 build/C/man2/setns.2:29
6911 #, no-wrap
6912 msgid "\\(bu"
6913 msgstr ""
6914
6915 #. type: Plain text
6916 #: build/C/man7/sched.7:187
6917 msgid ""
6918 "If the thread's priority is raised, it is placed at the end of the list for "
6919 "its new priority.  As a consequence, it may preempt a currently running "
6920 "thread with the same priority."
6921 msgstr ""
6922
6923 #. type: Plain text
6924 #: build/C/man7/sched.7:190
6925 msgid ""
6926 "If the thread's priority is unchanged, its position in the run list is "
6927 "unchanged."
6928 msgstr ""
6929
6930 #. type: Plain text
6931 #: build/C/man7/sched.7:193
6932 #, fuzzy
6933 #| msgid ""
6934 #| "When a B<SCHED_FIFO> thread becomes runnable, it will be inserted at the "
6935 #| "end of the list for its priority."
6936 msgid ""
6937 "If the thread's priority is lowered, it is placed at the front of the list "
6938 "for its new priority."
6939 msgstr ""
6940 "B<SCHED_FIFO> スレッドが実行可能になった時、その優先度のリストの最後 に挿入さ"
6941 "れる。"
6942
6943 #.  In 2.2.x and 2.4.x, the thread is placed at the front of the queue
6944 #.  In 2.0.x, the Right Thing happened: the thread went to the back -- MTK
6945 #. type: Plain text
6946 #: build/C/man7/sched.7:202
6947 msgid ""
6948 "According to POSIX.1-2008, changes to a thread's priority (or policy) using "
6949 "any mechanism other than B<pthread_setschedprio>(3)  should result in the "
6950 "thread being placed at the end of the list for its priority."
6951 msgstr ""
6952
6953 #. type: IP
6954 #: build/C/man7/sched.7:202
6955 #, no-wrap
6956 msgid "4)"
6957 msgstr ""
6958
6959 #. type: Plain text
6960 #: build/C/man7/sched.7:206
6961 msgid "A thread calling B<sched_yield>(2)  will be put at the end of the list."
6962 msgstr "B<sched_yield>(2)  を呼び出したスレッドはリストの最後に置かれる。"
6963
6964 #. type: Plain text
6965 #: build/C/man7/sched.7:210
6966 msgid ""
6967 "No other events will move a thread scheduled under the B<SCHED_FIFO> policy "
6968 "in the wait list of runnable threads with equal static priority."
6969 msgstr ""
6970 "その他のイベントによって B<SCHED_FIFO> ポリシーでスケジューリングされるスレッ"
6971 "ドが同じ優先度の実行可能なスレッドの待ちリストの中を移動することはない。"
6972
6973 #. type: Plain text
6974 #: build/C/man7/sched.7:215
6975 msgid ""
6976 "A B<SCHED_FIFO> thread runs until either it is blocked by an I/O request, it "
6977 "is preempted by a higher priority thread, or it calls B<sched_yield>(2)."
6978 msgstr ""
6979 "B<SCHED_FIFO> スレッドは I/O 要求によって停止するか、 より高い優先度のスレッ"
6980 "ドによって置きかえられるか、 B<sched_yield>(2)  を呼び出すまで実行を続ける。"
6981
6982 #. type: SS
6983 #: build/C/man7/sched.7:215
6984 #, no-wrap
6985 msgid "SCHED_RR: Round-robin scheduling"
6986 msgstr "SCHED_RR: ラウンドロビン (round-robin) スケジューリング"
6987
6988 #.  On Linux 2.4, the length of the RR interval is influenced
6989 #.  by the process nice value -- MTK
6990 #. type: Plain text
6991 #: build/C/man7/sched.7:234
6992 msgid ""
6993 "B<SCHED_RR> is a simple enhancement of B<SCHED_FIFO>.  Everything described "
6994 "above for B<SCHED_FIFO> also applies to B<SCHED_RR>, except that each thread "
6995 "is allowed to run only for a maximum time quantum.  If a B<SCHED_RR> thread "
6996 "has been running for a time period equal to or longer than the time quantum, "
6997 "it will be put at the end of the list for its priority.  A B<SCHED_RR> "
6998 "thread that has been preempted by a higher priority thread and subsequently "
6999 "resumes execution as a running thread will complete the unexpired portion of "
7000 "its round-robin time quantum.  The length of the time quantum can be "
7001 "retrieved using B<sched_rr_get_interval>(2)."
7002 msgstr ""
7003 "B<SCHED_RR> は B<SCHED_FIFO> の単純な拡張である。 上述された\n"
7004 "B<SCHED_FIFO> に関する記述は全て B<SCHED_RR> に 適用できる。異なるのは\n"
7005 "それぞれのスレッドは最大時間単位までしか実行できない ということである。\n"
7006 "B<SCHED_RR> スレッドが時間単位と同じかそれより 長い時間実行されると、\n"
7007 "その優先度のリストの最後に置かれる。 より高い優先度のスレッドによって\n"
7008 "置きかえられ、その後実行を再開した B<SCHED_RR> スレッドは、そのラウンド\n"
7009 "ロビン時間単位を完全に使い切る まで実行される。その時間単位の長さは\n"
7010 "B<sched_rr_get_interval>(2) を使って取得できる。"
7011
7012 #. type: SS
7013 #: build/C/man7/sched.7:234
7014 #, no-wrap
7015 msgid "SCHED_DEADLINE: Sporadic task model deadline scheduling"
7016 msgstr "SCHED_DEADLINE: 散発タスクモデルのデッドラインスケジューリング"
7017
7018 #. type: Plain text
7019 #: build/C/man7/sched.7:246
7020 msgid ""
7021 "Since version 3.14, Linux provides a deadline scheduling policy "
7022 "(B<SCHED_DEADLINE>).  This policy is currently implemented using GEDF "
7023 "(Global Earliest Deadline First)  in conjunction with CBS (Constant "
7024 "Bandwidth Server).  To set and fetch this policy and associated attributes, "
7025 "one must use the Linux-specific B<sched_setattr>(2)  and "
7026 "B<sched_getattr>(2)  system calls."
7027 msgstr ""
7028 "バージョン 3.14 以降では、 Linux はデッドラインスケジューリングポリシー "
7029 "(B<SCHED_DEADLINE>) が提供される。 現在のところ、 このポリシーは GEDF "
7030 "(Global Earliest Deadline First) を使って CBS (Constant Bandwidth Server) と"
7031 "の組み合わせで実装されている。 このポリシーと関連する属性の設定、取得を行うに"
7032 "は、 Linux 固有のシステムコール B<sched_setattr>(2) と B<sched_getattr>(2) を"
7033 "使用する必要がある。"
7034
7035 #. type: Plain text
7036 #: build/C/man7/sched.7:264
7037 msgid ""
7038 "A sporadic task is one that has a sequence of jobs, where each job is "
7039 "activated at most once per period.  Each job also has a I<relative "
7040 "deadline>, before which it should finish execution, and a I<computation "
7041 "time>, which is the CPU time necessary for executing the job.  The moment "
7042 "when a task wakes up because a new job has to be executed is called the "
7043 "I<arrival time> (also referred to as the request time or release time).  The "
7044 "I<start time> is the time at which a task starts its execution.  The "
7045 "I<absolute deadline> is thus obtained by adding the relative deadline to the "
7046 "arrival time."
7047 msgstr ""
7048 "散発タスク (sporadic task) はジョブ列を持つタスクで、 各ジョブは期間 "
7049 "(period) あたり多くとも 1 回だけ有効化される。 各ジョブには I<relative "
7050 "deadline> (相対デッドライン) と I<computation time> (計算時間) がある。 相対"
7051 "デッドラインは、そのジョブがそのデッドラインより前に実行が終了すべきであるこ"
7052 "とを示す。 計算時間は、このジョブを実行するのに必要な CPU 時間である。 新しい"
7053 "ジョブを実行する必要が出てタスクが起こされる時点は I<arrival time> (到着時"
7054 "刻) と呼ばれる (要求時刻 (request time) や解放時刻 (release time) と呼ばれる"
7055 "こともある)。 I<start time> はタスクが実行を開始する時刻である。 したがっ"
7056 "て、 I<absolute deadline> (絶対デッドライン) は到着時刻に相対デッドラインを加"
7057 "算することで求められる。"
7058
7059 #. type: Plain text
7060 #: build/C/man7/sched.7:266
7061 msgid "The following diagram clarifies these terms:"
7062 msgstr "以下の図はこれらの用語をまとめたものである。"
7063
7064 #. type: Plain text
7065 #: build/C/man7/sched.7:277
7066 #, no-wrap
7067 msgid ""
7068 "arrival/wakeup                    absolute deadline\n"
7069 "     |    start time                    |\n"
7070 "     |        |                         |\n"
7071 "     v        v                         v\n"
7072 "-----x--------xooooooooooooooooo--------x--------x---\n"
7073 "              |E<lt>- comp. time -E<gt>|\n"
7074 "     |E<lt>------- relative deadline ------E<gt>|\n"
7075 "     |E<lt>-------------- period -------------------E<gt>|\n"
7076 msgstr ""
7077 "arrival/wakeup                    absolute deadline\n"
7078 "     |    start time                    |\n"
7079 "     |        |                         |\n"
7080 "     v        v                         v\n"
7081 "-----x--------xooooooooooooooooo--------x--------x---\n"
7082 "              |E<lt>- comp. time -E<gt>|\n"
7083 "     |E<lt>------- relative deadline ------E<gt>|\n"
7084 "     |E<lt>-------------- period -------------------E<gt>|\n"
7085
7086 #. type: Plain text
7087 #: build/C/man7/sched.7:296
7088 msgid ""
7089 "When setting a B<SCHED_DEADLINE> policy for a thread using "
7090 "B<sched_setattr>(2), one can specify three parameters: I<Runtime>, "
7091 "I<Deadline>, and I<Period>.  These parameters do not necessarily correspond "
7092 "to the aforementioned terms: usual practice is to set Runtime to something "
7093 "bigger than the average computation time (or worst-case execution time for "
7094 "hard real-time tasks), Deadline to the relative deadline, and Period to the "
7095 "period of the task.  Thus, for B<SCHED_DEADLINE> scheduling, we have:"
7096 msgstr ""
7097 "B<sched_setattr>(2) を使ってスレッドに B<SCHED_DEADLINE> ポリシーを設定する"
7098 "際、 I<Runtime>, I<Deadline>, I<Period> の 3 つのパラメーターを指定することが"
7099 "できる。 これらのパラメーターは必ずしも上で述べた用語に対応しているわけではな"
7100 "い。 よくある方法としては、 Runtime に平均計算時間 (もしくはハードリアルタイ"
7101 "ムタスクの場合は最悪ケースの実行時間) よりも大きな値を、 Deadline に相対デッ"
7102 "ドラインを、 Period にタスクの期間 (period) を設定する。 したがって、 "
7103 "B<SCHED_DEADLINE> スケジューリングでは、 以下のようになる。"
7104
7105 #. type: Plain text
7106 #: build/C/man7/sched.7:307
7107 #, no-wrap
7108 msgid ""
7109 "arrival/wakeup                    absolute deadline\n"
7110 "     |    start time                    |\n"
7111 "     |        |                         |\n"
7112 "     v        v                         v\n"
7113 "-----x--------xooooooooooooooooo--------x--------x---\n"
7114 "              |E<lt>-- Runtime -------E<gt>|\n"
7115 "     |E<lt>----------- Deadline -----------E<gt>|\n"
7116 "     |E<lt>-------------- Period -------------------E<gt>|\n"
7117 msgstr ""
7118 "arrival/wakeup                    absolute deadline\n"
7119 "     |    start time                    |\n"
7120 "     |        |                         |\n"
7121 "     v        v                         v\n"
7122 "-----x--------xooooooooooooooooo--------x--------x---\n"
7123 "              |E<lt>-- Runtime -------E<gt>|\n"
7124 "     |E<lt>----------- Deadline -----------E<gt>|\n"
7125 "     |E<lt>-------------- Period -------------------E<gt>|\n"
7126
7127 #.  FIXME It looks as though specifying sched_period as 0 means
7128 #.  "make sched_period the same as sched_deadline".
7129 #.  This needs to be documented.
7130 #. type: Plain text
7131 #: build/C/man7/sched.7:327
7132 msgid ""
7133 "The three deadline-scheduling parameters correspond to the I<sched_runtime>, "
7134 "I<sched_deadline>, and I<sched_period> fields of the I<sched_attr> "
7135 "structure; see B<sched_setattr>(2).  These fields express values in "
7136 "nanoseconds.  If I<sched_period> is specified as 0, then it is made the same "
7137 "as I<sched_deadline>."
7138 msgstr ""
7139 "3 つのデッドラインスケジューリングパラメーターは I<sched_attr> 構造体の "
7140 "I<sched_runtime>, I<sched_deadline>, I<sched_period> フィールドに対応する。 "
7141 "これらのフィールドはナノ秒単位の値である。 I<sched_period> に 0 が指定された"
7142 "場合 I<sched_deadline> と同じ値になる。"
7143
7144 #. type: Plain text
7145 #: build/C/man7/sched.7:329
7146 msgid "The kernel requires that:"
7147 msgstr "カーネルでは以下の関係が成り立つことが求められる。"
7148
7149 #. type: Plain text
7150 #: build/C/man7/sched.7:331
7151 #, no-wrap
7152 msgid "    sched_runtime E<lt>= sched_deadline E<lt>= sched_period\n"
7153 msgstr "    sched_runtime E<lt>= sched_deadline E<lt>= sched_period\n"
7154
7155 #.  See __checkparam_dl in kernel/sched/core.c
7156 #. type: Plain text
7157 #: build/C/man7/sched.7:341
7158 msgid ""
7159 "In addition, under the current implementation, all of the parameter values "
7160 "must be at least 1024 (i.e., just over one microsecond, which is the "
7161 "resolution of the implementation), and less than 2^63.  If any of these "
7162 "checks fails, B<sched_setattr>(2)  fails with the error B<EINVAL>."
7163 msgstr ""
7164 "これに加えて、 現在の実装では、 すべてのパラメーター値は少なくとも 1024 (実装"
7165 "の粒度である 1 マイクロ秒よりも少しだけ大きな値) で 2^63 よりも小さくなければ"
7166 "ならない。 これらのチェックのいずれかが失敗すると、 B<sched_setattr>(2) はエ"
7167 "ラー B<EINVAL> で失敗する。"
7168
7169 #. type: Plain text
7170 #: build/C/man7/sched.7:344
7171 msgid ""
7172 "The CBS guarantees non-interference between tasks, by throttling threads "
7173 "that attempt to over-run their specified Runtime."
7174 msgstr ""
7175 "CBS によりタスク間の干渉がないことが保証される。 指定された Runtime を超えて"
7176 "実行しようとしたスレッドは絞り込まれることになる。"
7177
7178 #. type: Plain text
7179 #: build/C/man7/sched.7:357
7180 msgid ""
7181 "To ensure deadline scheduling guarantees, the kernel must prevent situations "
7182 "where the set of B<SCHED_DEADLINE> threads is not feasible (schedulable) "
7183 "within the given constraints.  The kernel thus performs an admittance test "
7184 "when setting or changing B<SCHED_DEADLINE> policy and attributes.  This "
7185 "admission test calculates whether the change is feasible; if it is not, "
7186 "B<sched_setattr>(2)  fails with the error B<EBUSY>."
7187 msgstr ""
7188 "デッドラインスケジューリングの保証がきちんと機能するためには、 カーネルは "
7189 "B<SCHEDULING> スレッドの集合が指定された制約条件におさまらない (スケジューリ"
7190 "ングできない) 状況を防止しなければならない。 そのため、カーネルは "
7191 "B<SCHED_DEADLINE> ポリシーと属性を設定、変更する際に、受け入れチェック "
7192 "(admittance test) を実行する。 この受け入れチェックは、変更が実行可能かを計算"
7193 "し、もし実行できないようであれば B<sched_setattr>(2) はエラー B<EBUSY> で失敗"
7194 "する。"
7195
7196 #. type: Plain text
7197 #: build/C/man7/sched.7:363
7198 msgid ""
7199 "For example, it is required (but not necessarily sufficient) for the total "
7200 "utilization to be less than or equal to the total number of CPUs available, "
7201 "where, since each thread can maximally run for Runtime per Period, that "
7202 "thread's utilization is its Runtime divided by its Period."
7203 msgstr ""
7204 "例えば、 使用率の合計が利用可能な合計 CPU 数以下である必要がある (ただし、必"
7205 "ずしも十分というわけではない)。 なお、 各スレッドは最大で Period あたり "
7206 "Runtime だけ実行されることがあるので、 そのスレッドの使用率は Runtime を "
7207 "Period で割ったものとなる。"
7208
7209 #. type: Plain text
7210 #: build/C/man7/sched.7:374
7211 msgid ""
7212 "In order to fulfill the guarantees that are made when a thread is admitted "
7213 "to the B<SCHED_DEADLINE> policy, B<SCHED_DEADLINE> threads are the highest "
7214 "priority (user controllable) threads in the system; if any B<SCHED_DEADLINE> "
7215 "thread is runnable, it will preempt any thread scheduled under one of the "
7216 "other policies."
7217 msgstr ""
7218 "スレッドが B<SCHED_DEADLINE> ポリシーに受け入れられた場合に保証を実現するた"
7219 "め、 B<SCHED_DEADLINE> スレッドはシステムで (ユーザーが制御可能な) 最高優先度"
7220 "のスレッドとなる。 いずれかの B<SCHED_DEADLINE> スレッドが実行可能であれば、 "
7221 "他のポリシーでスケジューリングされているスレッドはすべて横取りされる。"
7222
7223 #. type: Plain text
7224 #: build/C/man7/sched.7:382
7225 msgid ""
7226 "A call to B<fork>(2)  by a thread scheduled under the B<SCHED_DEADLINE> "
7227 "policy fails with the error B<EAGAIN>, unless the thread has its reset-on-"
7228 "fork flag set (see below)."
7229 msgstr ""
7230 "B<SCHED_DEADLINE> ポリシーでスケジューリングされているスレッドが B<fork>(2) "
7231 "を呼び出すと、 そのスレッドで reset-on-fork フラグがセットされている場合 (下"
7232 "記参照) を除き、 エラー B<EAGAIN> で失敗する。"
7233
7234 #
7235 #.  FIXME Calling sched_getparam() on a SCHED_DEADLINE thread
7236 #.  fails with EINVAL, but sched_getscheduler() succeeds.
7237 #.  Is that intended? (Why?)
7238 #. type: Plain text
7239 #: build/C/man7/sched.7:393
7240 msgid ""
7241 "A B<SCHED_DEADLINE> thread that calls B<sched_yield>(2)  will yield the "
7242 "current job and wait for a new period to begin."
7243 msgstr ""
7244 "B<SCHED_DEADLINE> スレッドが B<sched_yield>(2) を呼び出すと、 現在のジョブが "
7245 "CPU を明け渡し、新しい期間が開始するのを待つ。"
7246
7247 #. type: SS
7248 #: build/C/man7/sched.7:393
7249 #, no-wrap
7250 msgid "SCHED_OTHER: Default Linux time-sharing scheduling"
7251 msgstr "SCHED_OTHER: Linux のデフォルトの時分割スケジューリング"
7252
7253 #. type: Plain text
7254 #: build/C/man7/sched.7:401
7255 msgid ""
7256 "B<SCHED_OTHER> can be used at only static priority 0 (i.e., threads under "
7257 "real-time policies always have priority over B<SCHED_OTHER> processes).  "
7258 "B<SCHED_OTHER> is the standard Linux time-sharing scheduler that is intended "
7259 "for all threads that do not require the special real-time mechanisms."
7260 msgstr ""
7261
7262 #. type: Plain text
7263 #: build/C/man7/sched.7:409
7264 #, fuzzy
7265 #| msgid ""
7266 #| "B<SCHED_OTHER> can be used at only static priority 0.  B<SCHED_OTHER> is "
7267 #| "the standard Linux time-sharing scheduler that is intended for all "
7268 #| "threads that do not require the special real-time mechanisms.  The thread "
7269 #| "to run is chosen from the static priority 0 list based on a I<dynamic> "
7270 #| "priority that is determined only inside this list.  The dynamic priority "
7271 #| "is based on the nice value (set by B<nice>(2), B<setpriority>(2), or "
7272 #| "B<sched_setattr>(2))  and increased for each time quantum the thread is "
7273 #| "ready to run, but denied to run by the scheduler.  This ensures fair "
7274 #| "progress among all B<SCHED_OTHER> threads."
7275 msgid ""
7276 "The thread to run is chosen from the static priority 0 list based on a "
7277 "I<dynamic> priority that is determined only inside this list.  The dynamic "
7278 "priority is based on the nice value (see below)  and is increased for each "
7279 "time quantum the thread is ready to run, but denied to run by the "
7280 "scheduler.  This ensures fair progress among all B<SCHED_OTHER> threads."
7281 msgstr ""
7282 "B<SCHED_OTHER> は静的優先度 0 でのみ使用できる。 B<SCHED_OTHER> は Linux 標準"
7283 "の時分割スケジューラで、 特別なリアルタイム機構を必要としていない全てのスレッ"
7284 "ドで使用される。 実行するスレッドは、静的優先度 0 のリストから、このリストの"
7285 "中だけで 決定される「動的な」優先度 (dynamic priority) に基いて決定される。 "
7286 "動的な優先度は (B<nice>(2), B<setpriority>(2), B<sched_setattr>(2) により設定"
7287 "される) nice 値に基づいて決定されるもので、 単位時間毎に、スレッドが実行可能"
7288 "だが、スケジューラにより実行が拒否された 場合にインクリメントされる。 これに"
7289 "より、全ての B<SCHED_OTHER> スレッドでの公平性が保証される。"
7290
7291 #. type: Plain text
7292 #: build/C/man7/sched.7:415
7293 msgid ""
7294 "In the Linux kernel source code, the B<SCHED_OTHER> policy is actually named "
7295 "B<SCHED_NORMAL>."
7296 msgstr ""
7297
7298 #. type: SS
7299 #: build/C/man7/sched.7:415
7300 #, no-wrap
7301 msgid "The nice value"
7302 msgstr "nice 値"
7303
7304 #. type: Plain text
7305 #: build/C/man7/sched.7:429
7306 msgid ""
7307 "The nice value is an attribute that can be used to influence the CPU "
7308 "scheduler to favor or disfavor a process in scheduling decisions.  It "
7309 "affects the scheduling of B<SCHED_OTHER> and B<SCHED_BATCH> (see below) "
7310 "processes.  The nice value can be modified using B<nice>(2), "
7311 "B<setpriority>(2), or B<sched_setattr>(2)."
7312 msgstr ""
7313
7314 #. type: Plain text
7315 #: build/C/man7/sched.7:434
7316 msgid ""
7317 "According to POSIX.1, the nice value is a per-process attribute; that is, "
7318 "the threads in a process should share a nice value.  However, on Linux, the "
7319 "nice value is a per-thread attribute: different threads in the same process "
7320 "may have different nice values."
7321 msgstr ""
7322
7323 #.  Linux before 1.3.36 had \-infinity..15.
7324 #.  Since kernel 1.3.43, Linux has the range \-20..19.
7325 #. type: Plain text
7326 #: build/C/man7/sched.7:442
7327 msgid ""
7328 "The range of the nice value varies across UNIX systems.  On modern Linux, "
7329 "the range is -20 (high priority) to +19 (low priority).  On some other "
7330 "systems, the range is -20..20.  Very early Linux kernels (Before Linux 2.0) "
7331 "had the range -infinity..15."
7332 msgstr ""
7333
7334 #. type: Plain text
7335 #: build/C/man7/sched.7:447
7336 msgid ""
7337 "The degree to which the nice value affects the relative scheduling of "
7338 "B<SCHED_OTHER> processes likewise varies across UNIX systems and across "
7339 "Linux kernel versions."
7340 msgstr ""
7341
7342 #. type: Plain text
7343 #: build/C/man7/sched.7:459
7344 msgid ""
7345 "With the advent of the CFS scheduler in kernel 2.6.23, Linux adopted an "
7346 "algorithm that causes relative differences in nice values to have a much "
7347 "stronger effect.  In the current implementation, each unit of difference in "
7348 "the nice values of two processes results in a factor of 1.25 in the degree "
7349 "to which the scheduler favors the higher priority process.  This causes very "
7350 "low nice values (+19) to truly provide little CPU to a process whenever "
7351 "there is any other higher priority load on the system, and makes high nice "
7352 "values (-20) deliver most of the CPU to applications that require it (e.g., "
7353 "some audio applications)."
7354 msgstr ""
7355
7356 #. type: Plain text
7357 #: build/C/man7/sched.7:466
7358 msgid ""
7359 "On Linux, the B<RLIMIT_NICE> resource limit can be used to define a limit to "
7360 "which an unprivileged process's nice value can be raised; see "
7361 "B<setrlimit>(2)  for details."
7362 msgstr ""
7363
7364 #. type: Plain text
7365 #: build/C/man7/sched.7:470
7366 msgid ""
7367 "For further details on the nice value, see the subsections on the autogroup "
7368 "feature and group scheduling, below."
7369 msgstr ""
7370
7371 #. type: SS
7372 #: build/C/man7/sched.7:470
7373 #, no-wrap
7374 msgid "SCHED_BATCH: Scheduling batch processes"
7375 msgstr "SCHED_BATCH: バッチプロセスのスケジューリング"
7376
7377 #. type: Plain text
7378 #: build/C/man7/sched.7:482
7379 msgid ""
7380 "(Since Linux 2.6.16.)  B<SCHED_BATCH> can be used only at static priority "
7381 "0.  This policy is similar to B<SCHED_OTHER> in that it schedules the thread "
7382 "according to its dynamic priority (based on the nice value).  The difference "
7383 "is that this policy will cause the scheduler to always assume that the "
7384 "thread is CPU-intensive.  Consequently, the scheduler will apply a small "
7385 "scheduling penalty with respect to wakeup behavior, so that this thread is "
7386 "mildly disfavored in scheduling decisions."
7387 msgstr ""
7388 "(Linux 2.6.16 以降)  B<SCHED_BATCH> は静的優先度 0 でのみ使用できる。 このポ"
7389 "リシーは (nice 値に基づく) 動的な優先度にしたがってスレッドの スケジューリン"
7390 "グが行われるという点で、B<SCHED_OTHER> に似ている。 異なるのは、このポリシー"
7391 "では、スレッドが常に CPU に負荷のかかる (CPU-intensive)  処理を行うと、スケ"
7392 "ジューラが仮定する点である。 スケジューラはスレッドを呼び起こす毎にそのスレッ"
7393 "ドにスケジューリング上の ペナルティを少し課し、その結果、このスレッドはスケ"
7394 "ジューリングの決定で 若干冷遇されるようになる。"
7395
7396 #.  The following paragraph is drawn largely from the text that
7397 #.  accompanied Ingo Molnar's patch for the implementation of
7398 #.  SCHED_BATCH.
7399 #.  commit b0a9499c3dd50d333e2aedb7e894873c58da3785
7400 #. type: Plain text
7401 #: build/C/man7/sched.7:492
7402 msgid ""
7403 "This policy is useful for workloads that are noninteractive, but do not want "
7404 "to lower their nice value, and for workloads that want a deterministic "
7405 "scheduling policy without interactivity causing extra preemptions (between "
7406 "the workload's tasks)."
7407 msgstr ""
7408 "このポリシーは、非対話的な処理だがその nice 値を下げたくない処理や、 (処理の"
7409 "タスク間で) 余計なタスクの置き換えの原因とある対話的な処理なしで 確定的な "
7410 "(deterministic) スケジューリングポリシーを適用したい処理に 対して有効である。"
7411
7412 #. type: SS
7413 #: build/C/man7/sched.7:492
7414 #, no-wrap
7415 msgid "SCHED_IDLE: Scheduling very low priority jobs"
7416 msgstr "SCHED_IDLE: 非常に優先度の低いジョブのスケジューリング"
7417
7418 #. type: Plain text
7419 #: build/C/man7/sched.7:496
7420 msgid ""
7421 "(Since Linux 2.6.23.)  B<SCHED_IDLE> can be used only at static priority 0; "
7422 "the process nice value has no influence for this policy."
7423 msgstr ""
7424 "(Linux 2.6.23 以降)  B<SCHED_IDLE> は静的優先度 0 でのみ使用できる。 このポリ"
7425 "シーではプロセスの nice 値はスケジューリングに影響を与えない。"
7426
7427 #. type: Plain text
7428 #: build/C/man7/sched.7:504
7429 msgid ""
7430 "This policy is intended for running jobs at extremely low priority (lower "
7431 "even than a +19 nice value with the B<SCHED_OTHER> or B<SCHED_BATCH> "
7432 "policies)."
7433 msgstr ""
7434 "非常に低い優先度でのジョブの実行を目的としたものである (非常に低い優先度と"
7435 "は、ポリシー B<SCHED_OTHER> か B<SCHED_BATCH> での nice 値 +19 よりさらに低い"
7436 "優先度である)。"
7437
7438 #. type: SS
7439 #: build/C/man7/sched.7:504
7440 #, no-wrap
7441 msgid "Resetting scheduling policy for child processes"
7442 msgstr "子プロセスでのスケジューリングポリシーのリセット"
7443
7444 #. type: Plain text
7445 #: build/C/man7/sched.7:510
7446 msgid ""
7447 "Each thread has a reset-on-fork scheduling flag.  When this flag is set, "
7448 "children created by B<fork>(2)  do not inherit privileged scheduling "
7449 "policies.  The reset-on-fork flag can be set by either:"
7450 msgstr ""
7451 "各スレッドには reset-on-fork スケジューリングフラグがある。 このフラグがセッ"
7452 "トされると、 B<fork>(2) で作成される子プロセスは特権スケジューリングポリシー"
7453 "を継承しない。 reset-on-fork フラグは以下のいずれかの方法でセットできる。"
7454
7455 #. type: Plain text
7456 #: build/C/man7/sched.7:519
7457 msgid ""
7458 "ORing the B<SCHED_RESET_ON_FORK> flag into the I<policy> argument when "
7459 "calling B<sched_setscheduler>(2)  (since Linux 2.6.32); or"
7460 msgstr ""
7461 "B<sched_setscheduler>(2) を呼び出す際に B<SCHED_RESET_ON_FORK> フラグを "
7462 "I<policy> 引き数に論理和で指定する (Linux 2.6.32 以降)。"
7463
7464 #. type: Plain text
7465 #: build/C/man7/sched.7:526
7466 msgid ""
7467 "specifying the B<SCHED_FLAG_RESET_ON_FORK> flag in I<attr.sched_flags> when "
7468 "calling B<sched_setattr>(2)."
7469 msgstr ""
7470 "B<sched_setattr>(2) を呼び出し際に I<attr.sched_flags> に "
7471 "B<SCHED_FLAG_RESET_ON_FORK> フラグを指定する。"
7472
7473 #. type: Plain text
7474 #: build/C/man7/sched.7:532
7475 msgid ""
7476 "Note that the constants used with these two APIs have different names.  The "
7477 "state of the reset-on-fork flag can analogously be retrieved using "
7478 "B<sched_getscheduler>(2)  and B<sched_getattr>(2)."
7479 msgstr ""
7480 "これらの 2 つの API で使用される定数は名前が違っている点に注意すること。 同様"
7481 "に reset-on-fork フラグの状態は B<sched_getscheduler>(2) と "
7482 "B<sched_getattr>(2) を使って取得できる。"
7483
7484 #. type: Plain text
7485 #: build/C/man7/sched.7:539
7486 msgid ""
7487 "The reset-on-fork feature is intended for media-playback applications, and "
7488 "can be used to prevent applications evading the B<RLIMIT_RTTIME> resource "
7489 "limit (see B<getrlimit>(2))  by creating multiple child processes."
7490 msgstr ""
7491 "reset-on-fork 機能はメディア再生アプリケーションでの利用を意図したものであ"
7492 "る。 複数の子プロセスを作成することで、 アプリケーションは B<RLIMIT_RTTIME> "
7493 "リソース上限 (B<getrlimit>(2) を参照) を避けることができる。"
7494
7495 #. type: Plain text
7496 #: build/C/man7/sched.7:542
7497 msgid ""
7498 "More precisely, if the reset-on-fork flag is set, the following rules apply "
7499 "for subsequently created children:"
7500 msgstr ""
7501 "より正確には、 reset-on-fork フラグがセットされた場合、それ以降に作成される子"
7502 "プロセスに以下のルールが適用される。"
7503
7504 #. type: Plain text
7505 #: build/C/man7/sched.7:550
7506 msgid ""
7507 "If the calling thread has a scheduling policy of B<SCHED_FIFO> or "
7508 "B<SCHED_RR>, the policy is reset to B<SCHED_OTHER> in child processes."
7509 msgstr ""
7510 "呼び出したスレッドのスケジューリングポリシーが B<SCHED_FIFO> か B<SCHED_RR> "
7511 "の場合、子プロセスのポリシーは B<SCHED_OTHER> にリセットされる。"
7512
7513 #. type: Plain text
7514 #: build/C/man7/sched.7:553
7515 msgid ""
7516 "If the calling process has a negative nice value, the nice value is reset to "
7517 "zero in child processes."
7518 msgstr ""
7519 "子プロセスが負の nice 値を持っている場合、子プロセスの nice 値は 0 にリセット"
7520 "される。"
7521
7522 #. type: Plain text
7523 #: build/C/man7/sched.7:561
7524 msgid ""
7525 "After the reset-on-fork flag has been enabled, it can be reset only if the "
7526 "thread has the B<CAP_SYS_NICE> capability.  This flag is disabled in child "
7527 "processes created by B<fork>(2)."
7528 msgstr ""
7529 "一度 reset-on-fork フラグが有効にされた後は、このフラグをリセットできるのは、"
7530 "スレッドが B<CAP_SYS_NICE> ケーパビリティを持つ場合だけである。このフラグは "
7531 "B<fork>(2) で作成された子プロセスでは無効になる。"
7532
7533 #. type: SS
7534 #: build/C/man7/sched.7:561
7535 #, no-wrap
7536 msgid "Privileges and resource limits"
7537 msgstr "特権とリソース制限"
7538
7539 #. type: Plain text
7540 #: build/C/man7/sched.7:573
7541 msgid ""
7542 "In Linux kernels before 2.6.12, only privileged (B<CAP_SYS_NICE>)  threads "
7543 "can set a nonzero static priority (i.e., set a real-time scheduling "
7544 "policy).  The only change that an unprivileged thread can make is to set the "
7545 "B<SCHED_OTHER> policy, and this can be done only if the effective user ID of "
7546 "the caller matches the real or effective user ID of the target thread (i.e., "
7547 "the thread specified by I<pid>)  whose policy is being changed."
7548 msgstr ""
7549 "2.6.12 より前のバージョンの Linux カーネルでは、 特権スレッド "
7550 "(B<CAP_SYS_NICE> ケーパビリティを持つスレッド) だけが 0 以外の静的優先度を設"
7551 "定する (すなわち、リアルタイムスケジューリングポリシーを設定する) ことができ"
7552 "る。 非特権スレッドができる変更は B<SCHED_OTHER> ポリシーを設定することだけで"
7553 "あり、さらに、 この変更を行えるのは、 呼び出し元の実効ユーザー ID がポリシー"
7554 "の変更対象スレッド (I<pid> で指定されたスレッド) の実ユーザー ID か実効ユー"
7555 "ザー ID と 一致する場合だけである。"
7556
7557 #. type: Plain text
7558 #: build/C/man7/sched.7:579
7559 msgid ""
7560 "A thread must be privileged (B<CAP_SYS_NICE>)  in order to set or modify a "
7561 "B<SCHED_DEADLINE> policy."
7562 msgstr ""
7563 "B<SCHED_DEADLINE> ポリシーを設定、変更するには、スレッドが特権 "
7564 "(B<CAP_SYS_NICE>) を持っていなければならない。"
7565
7566 #. type: Plain text
7567 #: build/C/man7/sched.7:589
7568 msgid ""
7569 "Since Linux 2.6.12, the B<RLIMIT_RTPRIO> resource limit defines a ceiling on "
7570 "an unprivileged thread's static priority for the B<SCHED_RR> and "
7571 "B<SCHED_FIFO> policies.  The rules for changing scheduling policy and "
7572 "priority are as follows:"
7573 msgstr ""
7574 "Linux 2.6.12 以降では、リソース制限 B<RLIMIT_RTPRIO> が定義されており、 スケ"
7575 "ジューリングポリシーが B<SCHED_RR> と B<SCHED_FIFO> の場合の、非特権スレッド"
7576 "の静的優先度の上限を定めている。 スケジューリングポリシーと優先度を変更する際"
7577 "のルールは以下の通りである。"
7578
7579 #. type: Plain text
7580 #: build/C/man7/sched.7:597
7581 msgid ""
7582 "If an unprivileged thread has a nonzero B<RLIMIT_RTPRIO> soft limit, then it "
7583 "can change its scheduling policy and priority, subject to the restriction "
7584 "that the priority cannot be set to a value higher than the maximum of its "
7585 "current priority and its B<RLIMIT_RTPRIO> soft limit."
7586 msgstr ""
7587 "非特権スレッドに 0 以外の B<RLIMIT_RTPRIO> ソフトリミットが設定されている場"
7588 "合、 非特権スレッドはそのスレッドのスケジューリングポリシーと優先度を 変更で"
7589 "きるが、優先度を現在の自身の優先度と B<RLIMIT_RTPRIO> ソフトリミットの大きい"
7590 "方よりも高い値に設定できないという制限が課される。"
7591
7592 #. type: Plain text
7593 #: build/C/man7/sched.7:602
7594 msgid ""
7595 "If the B<RLIMIT_RTPRIO> soft limit is 0, then the only permitted changes are "
7596 "to lower the priority, or to switch to a non-real-time policy."
7597 msgstr ""
7598 "B<RLIMIT_RTPRIO> ソフトリミットが 0 の場合、優先度を下げるか、 リアルタイムで"
7599 "ないポリシーへ切り替えるかの変更だけが許可される。"
7600
7601 #. type: Plain text
7602 #: build/C/man7/sched.7:607
7603 msgid ""
7604 "Subject to the same rules, another unprivileged thread can also make these "
7605 "changes, as long as the effective user ID of the thread making the change "
7606 "matches the real or effective user ID of the target thread."
7607 msgstr ""
7608 "ある非特権スレッドが別のスレッドに対してこれらの変更を行う際にも、 同じルール"
7609 "が適用される。変更を行えるのは、変更を行おうとするスレッド の実効ユーザー ID "
7610 "が変更対象のスレッドの実ユーザー ID か実効ユーザー ID と 一致している場合に限"
7611 "られる。"
7612
7613 #.  commit c02aa73b1d18e43cfd79c2f193b225e84ca497c8
7614 #. type: Plain text
7615 #: build/C/man7/sched.7:626
7616 msgid ""
7617 "Special rules apply for the B<SCHED_IDLE> policy.  In Linux kernels before "
7618 "2.6.39, an unprivileged thread operating under this policy cannot change its "
7619 "policy, regardless of the value of its B<RLIMIT_RTPRIO> resource limit.  In "
7620 "Linux kernels since 2.6.39, an unprivileged thread can switch to either the "
7621 "B<SCHED_BATCH> or the B<SCHED_OTHER> policy so long as its nice value falls "
7622 "within the range permitted by its B<RLIMIT_NICE> resource limit (see "
7623 "B<getrlimit>(2))."
7624 msgstr "B<SCHED_IDLE> ポリシーの場合には特別なルールが適用される。 2.6.39 より前の Linux カーネルでは、このポリシーで動作する非特権スレッドは、 B<RLIMIT_RTPRIO> リソース上限の値に関わらず、自分のポリシーを変更することができない。 2.6.39 以降の Linux カーネルでは、非特権スレッドは、自分の nice 値が B<RLIMIT_NICE> リソース上限 (B<getrlimit>(2) 参照) で許可された範囲である限りは、自分のスケジューリングポリシーを B<SCHED_BATCH> か B<SCHED_OTHER> ポリシーに切り替えることができる。"
7625
7626 #. type: Plain text
7627 #: build/C/man7/sched.7:637
7628 msgid ""
7629 "Privileged (B<CAP_SYS_NICE>)  threads ignore the B<RLIMIT_RTPRIO> limit; as "
7630 "with older kernels, they can make arbitrary changes to scheduling policy and "
7631 "priority.  See B<getrlimit>(2)  for further information on B<RLIMIT_RTPRIO>."
7632 msgstr ""
7633 "特権スレッド (B<CAP_SYS_NICE> ケーパビリティを持つスレッド) の場合、 "
7634 "B<RLIMIT_RTPRIO> の制限は無視される; 古いカーネルと同じように、スケジューリン"
7635 "グポリシーと優先度に対し 任意の変更を行うことができる。 B<RLIMIT_RTPRIO> に関"
7636 "するもっと詳しい情報は B<getrlimit>(2)  を参照のこと。"
7637
7638 #. type: SS
7639 #: build/C/man7/sched.7:637
7640 #, no-wrap
7641 msgid "Limiting the CPU usage of real-time and deadline processes"
7642 msgstr "リアルタイムプロセスとデッドラインプロセスの CPU 使用量を制限する"
7643
7644 #. type: Plain text
7645 #: build/C/man7/sched.7:650
7646 #, fuzzy
7647 #| msgid ""
7648 #| "A nonblocking infinite loop in a thread scheduled under the "
7649 #| "B<SCHED_FIFO>, B<SCHED_RR>, or B<SCHED_DEADLINE> policy will block all "
7650 #| "threads with lower priority forever.  Prior to Linux 2.6.25, the only way "
7651 #| "of preventing a runaway real-time process from freezing the system was to "
7652 #| "run (at the console)  a shell scheduled under a higher static priority "
7653 #| "than the tested application.  This allows an emergency kill of tested "
7654 #| "real-time applications that do not block or terminate as expected."
7655 msgid ""
7656 "A nonblocking infinite loop in a thread scheduled under the B<SCHED_FIFO>, "
7657 "B<SCHED_RR>, or B<SCHED_DEADLINE> policy can potentially block all other "
7658 "threads from accessing the CPU forever.  Prior to Linux 2.6.25, the only way "
7659 "of preventing a runaway real-time process from freezing the system was to "
7660 "run (at the console)  a shell scheduled under a higher static priority than "
7661 "the tested application.  This allows an emergency kill of tested real-time "
7662 "applications that do not block or terminate as expected."
7663 msgstr ""
7664 "B<SCHED_FIFO>, B<SCHED_RR>, B<SCHED_DEADLINE> でスケジューリングされる スレッ"
7665 "ドが停止せずに無限ループに陥ると、 他の全てのより低い優先度のスレッドを永久に"
7666 "停止 (block) させてしまう。 Linux 2.6.25 より前では、 リアルタイムプロセスが"
7667 "暴走してしまい、システムが止まってしまうのを防止する唯一の方法は、 (コンソー"
7668 "ルで) シェルをテスト対象のアプリケーションよりも高い静的優先度で実行すること"
7669 "だけであった。 これによって期待通りに停止したり終了したりしないリアルタイム "
7670 "アプリケーションを緊急終了させることが可能になる。"
7671
7672 #. type: Plain text
7673 #: build/C/man7/sched.7:660
7674 msgid ""
7675 "Since Linux 2.6.25, there are other techniques for dealing with runaway real-"
7676 "time and deadline processes.  One of these is to use the B<RLIMIT_RTTIME> "
7677 "resource limit to set a ceiling on the CPU time that a real-time process may "
7678 "consume.  See B<getrlimit>(2)  for details."
7679 msgstr ""
7680 "Linux 2.6.25 以降では、 暴走したリアルタイムプロセスやデッドラインプロセスを"
7681 "扱う別の方法が提供されている。 一つは B<RLIMIT_RTTIME> リソース上限を使ってリ"
7682 "アルタイムプロセスが消費できる CPU 時間の上限を設定する方法である。 詳細は "
7683 "B<getrlimit>(2) を参照。"
7684
7685 #. type: Plain text
7686 #: build/C/man7/sched.7:668
7687 msgid ""
7688 "Since version 2.6.25, Linux also provides two I</proc> files that can be "
7689 "used to reserve a certain amount of CPU time to be used by non-real-time "
7690 "processes.  Reserving CPU time in this fashion allows some CPU time to be "
7691 "allocated to (say) a root shell that can be used to kill a runaway process.  "
7692 "Both of these files specify time values in microseconds:"
7693 msgstr ""
7694 "Linux 2.6.25 以降では、 2 つの I</proc> ファイルを使って、リアルタイムでない"
7695 "プロセスが使用できる CPU 時間を一定量予約することができる。 この方法で CPU 時"
7696 "間をいくらか予約しておくことで、 CPU 時間が (例えば) root シェルに割り当てら"
7697 "れ、このシェルから暴走したプロセスを殺すことができる。 これらのファイルでは両"
7698 "方ともマイクロ秒で時間を指定する。"
7699
7700 #. type: TP
7701 #: build/C/man7/sched.7:668
7702 #, no-wrap
7703 msgid "I</proc/sys/kernel/sched_rt_period_us>"
7704 msgstr "I</proc/sys/kernel/sched_rt_period_us>"
7705
7706 #. type: Plain text
7707 #: build/C/man7/sched.7:676
7708 msgid ""
7709 "This file specifies a scheduling period that is equivalent to 100% CPU "
7710 "bandwidth.  The value in this file can range from 1 to B<INT_MAX>, giving an "
7711 "operating range of 1 microsecond to around 35 minutes.  The default value in "
7712 "this file is 1,000,000 (1 second)."
7713 msgstr ""
7714 "このファイルは、 CPU 時間 100% にあたるスケジューリング間隔を指定する。 この"
7715 "ファイルの値として 1 から B<INT_MAX> を指定できる。 この値は実際の時間として"
7716 "は 1 マイクロ秒から約 35 分に相当する。 このファイルのデフォルト値は "
7717 "1,000,000 (1 秒) である。"
7718
7719 #. type: TP
7720 #: build/C/man7/sched.7:676
7721 #, no-wrap
7722 msgid "I</proc/sys/kernel/sched_rt_runtime_us>"
7723 msgstr "I</proc/sys/kernel/sched_rt_runtime_us>"
7724
7725 #. type: Plain text
7726 #: build/C/man7/sched.7:689
7727 msgid ""
7728 "The value in this file specifies how much of the \"period\" time can be used "
7729 "by all real-time and deadline scheduled processes on the system.  The value "
7730 "in this file can range from -1 to B<INT_MAX>-1.  Specifying -1 makes the run "
7731 "time the same as the period; that is, no CPU time is set aside for non-real-"
7732 "time processes (which was the Linux behavior before kernel 2.6.25).  The "
7733 "default value in this file is 950,000 (0.95 seconds), meaning that 5% of the "
7734 "CPU time is reserved for processes that don't run under a real-time or "
7735 "deadline scheduling policy."
7736 msgstr ""
7737 "このファイルの値は、 システム上のリアルタイムスケジューリングやデッドラインス"
7738 "ケジューリングの全プロセスが使用できる「期間」を指定する。 このファイルの値と"
7739 "して -1 から B<INT_MAX>-1 を指定できる。 -1 を指定すると、実行時間 (runtime) "
7740 "はスケジューリング間隔 (period) と同じになる。 つまり、 CPU 時間はリアルタイ"
7741 "ムでないプロセスには確保されない (カーネル 2.6.25 より前の Linux の動作であ"
7742 "る)。 このファイルのデフォルト値は 950,000 (0.95 秒) である。 これは CPU 時間"
7743 "の 5% がリアルタイムやデッドラインスケジューリングポリシー以外で動作するプロ"
7744 "セスに確保されるという意味する。"
7745
7746 #. type: SS
7747 #: build/C/man7/sched.7:690
7748 #, no-wrap
7749 msgid "Response time"
7750 msgstr "応答時間 (response time)"
7751
7752 #.  as described in
7753 #.  .BR request_irq (9).
7754 #. type: Plain text
7755 #: build/C/man7/sched.7:698
7756 msgid ""
7757 "A blocked high priority thread waiting for I/O has a certain response time "
7758 "before it is scheduled again.  The device driver writer can greatly reduce "
7759 "this response time by using a \"slow interrupt\" interrupt handler."
7760 msgstr ""
7761 "I/O 待ちで停止したより高い優先度のスレッドは再びスケジューリングされる 前にい"
7762 "くらかの応答時間がかかる。デバイスドライバーを書く場合には \"slow interrupt"
7763 "\" 割り込みハンドラーを使用することで この応答時間を劇的に減少させることがで"
7764 "きる。"
7765
7766 #. type: SS
7767 #: build/C/man7/sched.7:698
7768 #, no-wrap
7769 msgid "Miscellaneous"
7770 msgstr "その他"
7771
7772 #. type: Plain text
7773 #: build/C/man7/sched.7:703
7774 msgid ""
7775 "Child processes inherit the scheduling policy and parameters across a "
7776 "B<fork>(2).  The scheduling policy and parameters are preserved across "
7777 "B<execve>(2)."
7778 msgstr ""
7779 "子プロセスは B<fork>(2)  の際に親プロセスのスケジューリングポリシーとパラメー"
7780 "ターを継承する。 B<execve>(2)  の前後で、スケジューリングポリシーとパラメー"
7781 "ターは保持される。"
7782
7783 #. type: Plain text
7784 #: build/C/man7/sched.7:710
7785 msgid ""
7786 "Memory locking is usually needed for real-time processes to avoid paging "
7787 "delays; this can be done with B<mlock>(2)  or B<mlockall>(2)."
7788 msgstr ""
7789 "リアルタイムプロセスは大抵、ページングの待ち時間を避けるために B<mlock>(2)  "
7790 "や B<mlockall>(2)  を使ってメモリーロックをしなければならない。"
7791
7792 #. type: SS
7793 #: build/C/man7/sched.7:710
7794 #, no-wrap
7795 msgid "The autogroup feature"
7796 msgstr ""
7797
7798 #.  commit 5091faa449ee0b7d73bc296a93bca9540fc51d0a
7799 #. type: Plain text
7800 #: build/C/man7/sched.7:720
7801 msgid ""
7802 "Since Linux 2.6.38, the kernel provides a feature known as autogrouping to "
7803 "improve interactive desktop performance in the face of multiprocess, CPU-"
7804 "intensive workloads such as building the Linux kernel with large numbers of "
7805 "parallel build processes (i.e., the B<make>(1)  B<-j> flag)."
7806 msgstr ""
7807
7808 #. type: Plain text
7809 #: build/C/man7/sched.7:730
7810 msgid ""
7811 "This feature operates in conjunction with the CFS scheduler and requires a "
7812 "kernel that is configured with B<CONFIG_SCHED_AUTOGROUP>.  On a running "
7813 "system, this feature is enabled or disabled via the file I</proc/sys/kernel/"
7814 "sched_autogroup_enabled>; a value of 0 disables the feature, while a value "
7815 "of 1 enables it.  The default value in this file is 1, unless the kernel was "
7816 "booted with the I<noautogroup> parameter."
7817 msgstr ""
7818
7819 #. type: Plain text
7820 #: build/C/man7/sched.7:740
7821 msgid ""
7822 "A new autogroup is created when a new session is created via B<setsid>(2); "
7823 "this happens, for example, when a new terminal window is started.  A new "
7824 "process created by B<fork>(2)  inherits its parent's autogroup membership.  "
7825 "Thus, all of the processes in a session are members of the same autogroup.  "
7826 "An autogroup is automatically destroyed when the last process in the group "
7827 "terminates."
7828 msgstr ""
7829
7830 #. type: Plain text
7831 #: build/C/man7/sched.7:747
7832 msgid ""
7833 "When autogrouping is enabled, all of the members of an autogroup are placed "
7834 "in the same kernel scheduler \"task group\".  The CFS scheduler employs an "
7835 "algorithm that equalizes the distribution of CPU cycles across task groups.  "
7836 "The benefits of this for interactive desktop performance can be described "
7837 "via the following example."
7838 msgstr ""
7839
7840 #.  Mike Galbraith, 25 Nov 2016:
7841 #.      I'd say something more wishy-washy here, like cycles are
7842 #.      distributed fairly across groups and leave it at that, as your
7843 #.      detailed example is incorrect due to SMP fairness (which I don't
7844 #.      like much because [very unlikely] worst case scenario
7845 #.      renders a box sized group incapable of utilizing more that
7846 #.      a single CPU total).  For example, if a group of NR_CPUS
7847 #.      size competes with a singleton, load balancing will try to give
7848 #.      the singleton a full CPU of its very own.  If groups intersect for
7849 #.      whatever reason on say my quad lappy, distribution is 80/20 in
7850 #.      favor of the singleton.
7851 #. type: Plain text
7852 #: build/C/man7/sched.7:778
7853 msgid ""
7854 "Suppose that there are two autogroups competing for the same CPU (i.e., "
7855 "presume either a single CPU system or the use of B<taskset>(1)  to confine "
7856 "all the processes to the same CPU on an SMP system).  The first group "
7857 "contains ten CPU-bound processes from a kernel build started with I<make\\ -"
7858 "j10>.  The other contains a single CPU-bound process: a video player.  The "
7859 "effect of autogrouping is that the two groups will each receive half of the "
7860 "CPU cycles.  That is, the video player will receive 50% of the CPU cycles, "
7861 "rather than just 9% of the cycles, which would likely lead to degraded video "
7862 "playback.  The situation on an SMP system is more complex, but the general "
7863 "effect is the same: the scheduler distributes CPU cycles across task groups "
7864 "such that an autogroup that contains a large number of CPU-bound processes "
7865 "does not end up hogging CPU cycles at the expense of the other jobs on the "
7866 "system."
7867 msgstr ""
7868
7869 #. type: Plain text
7870 #: build/C/man7/sched.7:781
7871 msgid ""
7872 "A process's autogroup (task group) membership can be viewed via the file I</"
7873 "proc/[pid]/autogroup>:"
7874 msgstr ""
7875
7876 #. type: Plain text
7877 #: build/C/man7/sched.7:786
7878 #, no-wrap
7879 msgid ""
7880 "$ B<cat /proc/1/autogroup>\n"
7881 "/autogroup-1 nice 0\n"
7882 msgstr ""
7883
7884 #
7885 #.  FIXME .
7886 #.  Because of a bug introduced in Linux 4.7
7887 #.  (commit 2159197d66770ec01f75c93fb11dc66df81fd45b made changes
7888 #.  that exposed the fact that autogroup didn't call scale_load()),
7889 #.  it happened that *all* values in this range caused a task group
7890 #.  to be further disfavored by the scheduler, with \-20 resulting
7891 #.  in the scheduler mildly disfavoring the task group and +19 greatly
7892 #.  disfavoring it.
7893 #.  A patch was posted on 23 Nov 2016
7894 #.  ("sched/autogroup: Fix 64bit kernel nice adjustment";
7895 #.  check later to see in which kernel version it lands.
7896 #. type: Plain text
7897 #: build/C/man7/sched.7:810
7898 msgid ""
7899 "This file can also be used to modify the CPU bandwidth allocated to an "
7900 "autogroup.  This is done by writing a number in the \"nice\" range to the "
7901 "file to set the autogroup's nice value.  The allowed range is from +19 (low "
7902 "priority) to -20 (high priority).  (Writing values outside of this range "
7903 "causes B<write>(2)  to fail with the error B<EINVAL>.)"
7904 msgstr ""
7905
7906 #. type: Plain text
7907 #: build/C/man7/sched.7:819
7908 msgid ""
7909 "The autogroup nice setting has the same meaning as the process nice value, "
7910 "but applies to distribution of CPU cycles to the autogroup as a whole, based "
7911 "on the relative nice values of other autogroups.  For a process inside an "
7912 "autogroup, the CPU cycles that it receives will be a product of the "
7913 "autogroup's nice value (compared to other autogroups)  and the process's "
7914 "nice value (compared to other processes in the same autogroup."
7915 msgstr ""
7916
7917 #. type: Plain text
7918 #: build/C/man7/sched.7:824
7919 msgid ""
7920 "The use of the B<cgroups>(7)  CPU controller to place processes in cgroups "
7921 "other than the root CPU cgroup overrides the effect of autogrouping."
7922 msgstr ""
7923
7924 #. type: Plain text
7925 #: build/C/man7/sched.7:835
7926 msgid ""
7927 "The autogroup feature groups only processes scheduled under non-real-time "
7928 "policies (B<SCHED_OTHER>, B<SCHED_BATCH>, and B<SCHED_IDLE>).  It does not "
7929 "group processes scheduled under real-time and deadline policies.  Those "
7930 "processes are scheduled according to the rules described earlier."
7931 msgstr ""
7932
7933 #. type: SS
7934 #: build/C/man7/sched.7:835
7935 #, no-wrap
7936 msgid "The nice value and group scheduling"
7937 msgstr ""
7938
7939 #. type: Plain text
7940 #: build/C/man7/sched.7:845
7941 msgid ""
7942 "When scheduling non-real-time processes (i.e., those scheduled under the "
7943 "B<SCHED_OTHER>, B<SCHED_BATCH>, and B<SCHED_IDLE> policies), the CFS "
7944 "scheduler employs a technique known as \"group scheduling\", if the kernel "
7945 "was configured with the B<CONFIG_FAIR_GROUP_SCHED> option (which is typical)."
7946 msgstr ""
7947
7948 #. type: Plain text
7949 #: build/C/man7/sched.7:851
7950 msgid ""
7951 "Under group scheduling, threads are scheduled in \"task groups\".  Task "
7952 "groups have a hierarchical relationship, rooted under the initial task group "
7953 "on the system, known as the \"root task group\".  Task groups are formed in "
7954 "the following circumstances:"
7955 msgstr ""
7956
7957 #. type: Plain text
7958 #: build/C/man7/sched.7:855
7959 msgid ""
7960 "All of the threads in a CPU cgroup form a task group.  The parent of this "
7961 "task group is the task group of the corresponding parent cgroup."
7962 msgstr ""
7963
7964 #. type: Plain text
7965 #: build/C/man7/sched.7:863
7966 msgid ""
7967 "If autogrouping is enabled, then all of the threads that are (implicitly) "
7968 "placed in an autogroup (i.e., the same session, as created by B<setsid>(2))  "
7969 "form a task group.  Each new autogroup is thus a separate task group.  The "
7970 "root task group is the parent of all such autogroups."
7971 msgstr ""
7972
7973 #. type: Plain text
7974 #: build/C/man7/sched.7:867
7975 msgid ""
7976 "If autogrouping is enabled, then the root task group consists of all "
7977 "processes in the root CPU cgroup that were not otherwise implicitly placed "
7978 "into a new autogroup."
7979 msgstr ""
7980
7981 #. type: Plain text
7982 #: build/C/man7/sched.7:870
7983 msgid ""
7984 "If autogrouping is disabled, then the root task group consists of all "
7985 "processes in the root CPU cgroup."
7986 msgstr ""
7987
7988 #. type: Plain text
7989 #: build/C/man7/sched.7:875
7990 msgid ""
7991 "If group scheduling was disabled (i.e., the kernel was configured without "
7992 "B<CONFIG_FAIR_GROUP_SCHED>), then all of the processes on the system are "
7993 "notionally placed in a single task group."
7994 msgstr ""
7995
7996 #. type: Plain text
7997 #: build/C/man7/sched.7:889
7998 msgid ""
7999 "Under group scheduling, a thread's nice value has an effect for scheduling "
8000 "decisions I<only relative to other threads in the same task group>.  This "
8001 "has some surprising consequences in terms of the traditional semantics of "
8002 "the nice value on UNIX systems.  In particular, if autogrouping is enabled "
8003 "(which is the default in various distributions), then employing "
8004 "B<setpriority>(2)  or B<nice>(1)  on a process has an effect only for "
8005 "scheduling relative to other processes executed in the same session "
8006 "(typically: the same terminal window)."
8007 msgstr ""
8008
8009 #.  More succinctly: the nice(1) command is in many cases a no-op since
8010 #.  Linux 2.6.38.
8011 #. type: Plain text
8012 #: build/C/man7/sched.7:905
8013 msgid ""
8014 "Conversely, for two processes that are (for example)  the sole CPU-bound "
8015 "processes in different sessions (e.g., different terminal windows, each of "
8016 "whose jobs are tied to different autogroups), I<modifying the nice value of "
8017 "the process in one of the sessions> I<has no effect> in terms of the "
8018 "scheduler's decisions relative to the process in the other session.  A "
8019 "possibly useful workaround here is to use a command such as the following to "
8020 "modify the autogroup nice value for I<all> of the processes in a terminal "
8021 "session:"
8022 msgstr ""
8023
8024 #. type: Plain text
8025 #: build/C/man7/sched.7:909
8026 #, no-wrap
8027 msgid "$ B<echo 10 E<gt> /proc/self/autogroup>\n"
8028 msgstr ""
8029
8030 #. type: SS
8031 #: build/C/man7/sched.7:911
8032 #, no-wrap
8033 msgid "Real-time features in the mainline Linux kernel"
8034 msgstr "本流の Linux カーネルでのリアルタイム機能"
8035
8036 #.  FIXME . Probably this text will need some minor tweaking
8037 #.  ask Carsten Emde about this.
8038 #. type: Plain text
8039 #: build/C/man7/sched.7:923
8040 #, fuzzy
8041 #| msgid ""
8042 #| "From kernel version 2.6.18 onward, however, Linux is gradually becoming "
8043 #| "equipped with real-time capabilities, most of which are derived from the "
8044 #| "former I<realtime-preempt> patches developed by Ingo Molnar, Thomas "
8045 #| "Gleixner, Steven Rostedt, and others.  Until the patches have been "
8046 #| "completely merged into the mainline kernel (this is expected to be around "
8047 #| "kernel version 2.6.30), they must be installed to achieve the best real-"
8048 #| "time performance.  These patches are named:"
8049 msgid ""
8050 "Since kernel version 2.6.18, Linux is gradually becoming equipped with real-"
8051 "time capabilities, most of which are derived from the former I<realtime-"
8052 "preempt> patch set.  Until the patches have been completely merged into the "
8053 "mainline kernel, they must be installed to achieve the best real-time "
8054 "performance.  These patches are named:"
8055 msgstr ""
8056 "カーネル 2.6.18 から現在まで、 Linux は徐々にリアルタイム機能を備えつつ\n"
8057 "あるが、 これらの機能のほとんどは、 Ingo Molnar, Thomas Gleixner,\n"
8058 "Steven Rostedt らによって開発された、 以前の I<realtime-preempt> パッチ\n"
8059 "からのものである。 これらのパッチが本流のカーネルに完全にマージされるま\n"
8060 "では (マージの完了はカーネル 2.6.30 あたりの予定)、 最高のリアルタイム\n"
8061 "性能を達成するには realtime-preempt パッチを 組み込まなければならない。\n"
8062 "これらのパッチは"
8063
8064 #. type: Plain text
8065 #: build/C/man7/sched.7:927
8066 #, no-wrap
8067 msgid "patch-I<kernelversion>-rtI<patchversion>\n"
8068 msgstr "patch-I<kernelversion>-rtI<patchversion>\n"
8069
8070 #. type: Plain text
8071 #: build/C/man7/sched.7:933
8072 msgid ""
8073 "and can be downloaded from E<.UR http://www.kernel.org\\:/pub\\:/linux\\:/"
8074 "kernel\\:/projects\\:/rt/> E<.UE .>"
8075 msgstr ""
8076 "という名前で、 E<.UR http://www.kernel.org\\:/pub\\:/linux\\:/kernel\\:/"
8077 "projects\\:/rt/> E<.UE> からダウンロードできる。"
8078
8079 #. type: Plain text
8080 #: build/C/man7/sched.7:942
8081 msgid ""
8082 "Without the patches and prior to their full inclusion into the mainline "
8083 "kernel, the kernel configuration offers only the three preemption classes "
8084 "B<CONFIG_PREEMPT_NONE>, B<CONFIG_PREEMPT_VOLUNTARY>, and "
8085 "B<CONFIG_PREEMPT_DESKTOP> which respectively provide no, some, and "
8086 "considerable reduction of the worst-case scheduling latency."
8087 msgstr ""
8088 "このパッチが適用されず、かつパッチの内容の本流のカーネルへのマージが 完了する"
8089 "までは、カーネルの設定では B<CONFIG_PREEMPT_NONE>, "
8090 "B<CONFIG_PREEMPT_VOLUNTARY>, B<CONFIG_PREEMPT_DESKTOP> の 3つのプリエンプショ"
8091 "ンクラス (preemption class) だけが提供される。 これらのクラスでは、最悪の場合"
8092 "のスケジューリング遅延がそれぞれ 全く減らない、いくらか減る、かなり減る。"
8093
8094 #. type: Plain text
8095 #: build/C/man7/sched.7:951
8096 msgid ""
8097 "With the patches applied or after their full inclusion into the mainline "
8098 "kernel, the additional configuration item B<CONFIG_PREEMPT_RT> becomes "
8099 "available.  If this is selected, Linux is transformed into a regular real-"
8100 "time operating system.  The FIFO and RR scheduling policies are then used to "
8101 "run a thread with true real-time priority and a minimum worst-case "
8102 "scheduling latency."
8103 msgstr ""
8104 "パッチが適用された場合、またはパッチの内容の本流のカーネルへのマージが 完了し"
8105 "た後では、上記に加えて設定項目として B<CONFIG_PREEMPT_RT> が利用可能になる。"
8106 "この項目を選択すると、 Linux は通常のリアルタイムオペレーティングシステムに変"
8107 "身する。 この場合には、 FIFO と RR のスケジューリングポリシーは、 真のリアル"
8108 "タイム優先度を持つスレッドを最悪の場合のスケジューリング遅延が 最小となる環境"
8109 "で動作させるために使われることになる。"
8110
8111 #. type: Plain text
8112 #: build/C/man7/sched.7:956
8113 msgid ""
8114 "The B<cgroups>(7)  CPU controller can be used to limit the CPU consumption "
8115 "of groups of processes."
8116 msgstr ""
8117
8118 #. type: Plain text
8119 #: build/C/man7/sched.7:966
8120 msgid ""
8121 "Originally, Standard Linux was intended as a general-purpose operating "
8122 "system being able to handle background processes, interactive applications, "
8123 "and less demanding real-time applications (applications that need to usually "
8124 "meet timing deadlines).  Although the Linux kernel 2.6 allowed for kernel "
8125 "preemption and the newly introduced O(1) scheduler ensures that the time "
8126 "needed to schedule is fixed and deterministic irrespective of the number of "
8127 "active tasks, true real-time computing was not possible up to kernel version "
8128 "2.6.17."
8129 msgstr ""
8130 "もともとは、標準の Linux は一般目的のオペレーティングシステムとして 設計され"
8131 "ており、バックグラウンドプロセスや対話的アプリケーション、 リアルタイム性の要"
8132 "求が厳しくないリアルタイムアプリケーション (普通はタイミングの応答期限 "
8133 "(deadline) を満たす必要があるアプリケーション)  を扱うことができた。 Linux "
8134 "カーネル 2.6 では、 カーネルのプリエンプション (タスクの置き換え) が可能であ"
8135 "り、 新たに導入された O(1) スケジューラにより、 アクティブなタスクの数に関わ"
8136 "らずスケジューリングに必要な時間は 固定で確定的 (deterministic) であることが"
8137 "保証されている。 それにも関わらず、カーネル 2.6.17 までは 真のリアルタイムコ"
8138 "ンピューティングは実現できなかった。"
8139
8140 #. type: Plain text
8141 #: build/C/man7/sched.7:998
8142 msgid ""
8143 "B<chcpu>(1), B<chrt>(1), B<lscpu>(1), B<ps>(1), B<taskset>(1), B<top>(1), "
8144 "B<getpriority>(2), B<mlock>(2), B<mlockall>(2), B<munlock>(2), "
8145 "B<munlockall>(2), B<nice>(2), B<sched_get_priority_max>(2), "
8146 "B<sched_get_priority_min>(2), B<sched_getaffinity>(2), B<sched_getparam>(2), "
8147 "B<sched_getscheduler>(2), B<sched_rr_get_interval>(2), "
8148 "B<sched_setaffinity>(2), B<sched_setparam>(2), B<sched_setscheduler>(2), "
8149 "B<sched_yield>(2), B<setpriority>(2), B<pthread_getaffinity_np>(3), "
8150 "B<pthread_getschedparam>(3), B<pthread_setaffinity_np>(3), "
8151 "B<sched_getcpu>(3), B<capabilities>(7), B<cpuset>(7)"
8152 msgstr " B<chcpu>(1), B<chrt>(1), B<lscpu>(1), B<ps>(1), B<taskset>(1), B<top>(1), B<getpriority>(2), B<mlock>(2), B<mlockall>(2), B<munlock>(2), B<munlockall>(2), B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), B<sched_getaffinity>(2), B<sched_getparam>(2), B<sched_getscheduler>(2), B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), B<sched_setparam>(2), B<sched_setscheduler>(2), B<sched_yield>(2), B<setpriority>(2), B<pthread_getaffinity_np>(3), B<pthread_getschedparam>(3), B<pthread_setaffinity_np>(3), B<sched_getcpu>(3), B<capabilities>(7), B<cpuset>(7)"
8153
8154 #. type: Plain text
8155 #: build/C/man7/sched.7:1002
8156 msgid ""
8157 "I<Programming for the real world - POSIX.4> by Bill O.\\& Gallmeister, "
8158 "O'Reilly & Associates, Inc., ISBN 1-56592-074-0."
8159 msgstr "I<Programming for the real world - POSIX.4> by Bill O.\\& Gallmeister, O'Reilly & Associates, Inc., ISBN 1-56592-074-0."
8160
8161 #. type: Plain text
8162 #: build/C/man7/sched.7:1009
8163 msgid ""
8164 "The Linux kernel source files I<Documentation/scheduler/sched-deadline.txt>, "
8165 "I<Documentation/scheduler/sched-rt-group.txt>, I<Documentation/scheduler/"
8166 "sched-design-CFS.txt>, and I<Documentation/scheduler/sched-nice-design.txt>"
8167 msgstr ""
8168 "Linux カーネルソースのファイル I<Documentation/scheduler/sched-deadline."
8169 "txt>, I<Documentation/scheduler/sched-rt-group.txt>, I<Documentation/"
8170 "scheduler/sched-design-CFS.txt>, I<Documentation/scheduler/sched-nice-design."
8171 "txt>"
8172
8173 #. type: TH
8174 #: build/C/man2/setns.2:8
8175 #, no-wrap
8176 msgid "SETNS"
8177 msgstr "SETNS"
8178
8179 #. type: TH
8180 #: build/C/man2/setns.2:8
8181 #, no-wrap
8182 msgid "2020-08-13"
8183 msgstr ""
8184
8185 #. type: Plain text
8186 #: build/C/man2/setns.2:11
8187 msgid "setns - reassociate thread with a namespace"
8188 msgstr "setns - スレッドに名前空間を関連付けしなおす"
8189
8190 #. type: Plain text
8191 #: build/C/man2/setns.2:17
8192 #, no-wrap
8193 msgid "B<int setns(int >I<fd>B<, int >I<nstype>B<);>\n"
8194 msgstr "B<int setns(int >I<fd>B<, int >I<nstype>B<);>\n"
8195
8196 #. type: Plain text
8197 #: build/C/man2/setns.2:25
8198 msgid ""
8199 "The B<setns>()  system call allows the calling thread to move into different "
8200 "namespaces.  The I<fd> argument is one of the following:"
8201 msgstr ""
8202
8203 #. type: Plain text
8204 #: build/C/man2/setns.2:29
8205 msgid ""
8206 "a file descriptor referring to one of the magic links in a I</proc/[pid]/ns/"
8207 "> directory (or a bind mount to such a link);"
8208 msgstr ""
8209
8210 #. type: Plain text
8211 #: build/C/man2/setns.2:32
8212 msgid "a PID file descriptor (see B<pidfd_open>(2))."
8213 msgstr ""
8214
8215 #. type: Plain text
8216 #: build/C/man2/setns.2:37
8217 msgid "The I<nstype> argument is interpreted differently in each case."
8218 msgstr ""
8219
8220 #. type: SS
8221 #: build/C/man2/setns.2:37
8222 #, no-wrap
8223 msgid "fd refers to a /proc/[pid]/ns/ link"
8224 msgstr ""
8225
8226 #. type: Plain text
8227 #: build/C/man2/setns.2:51
8228 msgid ""
8229 "If I<fd> refers to a I</proc/[pid]/ns/> link, then B<setns>()  reassociates "
8230 "the calling thread with the namespace associated with that link, subject to "
8231 "any constraints imposed by the I<nstype> argument.  In this usage, each call "
8232 "to B<setns>()  changes just one of the caller's namespace memberships."
8233 msgstr ""
8234
8235 #. type: Plain text
8236 #: build/C/man2/setns.2:59
8237 msgid ""
8238 "The I<nstype> argument specifies which type of namespace the calling thread "
8239 "may be reassociated with.  This argument can have I<one> of the following "
8240 "values:"
8241 msgstr "I<nstype> 引き数は、呼び出したスレッドがどのタイプの名前空間を関連付けしなおすことができるかを指定する。この引き数には以下の「いずれか」の値を指定できる。"
8242
8243 #. type: TP
8244 #: build/C/man2/setns.2:59
8245 #, no-wrap
8246 msgid "B<0>"
8247 msgstr "B<0>"
8248
8249 #. type: Plain text
8250 #: build/C/man2/setns.2:62
8251 msgid "Allow any type of namespace to be joined."
8252 msgstr "どのタイプの名前空間も関連付けることができる。"
8253
8254 #. type: Plain text
8255 #: build/C/man2/setns.2:66
8256 msgid "I<fd> must refer to a cgroup namespace."
8257 msgstr "I<fd> は cgroup 名前空間を参照していなければならない。"
8258
8259 #. type: TP
8260 #: build/C/man2/setns.2:66
8261 #, no-wrap
8262 msgid "B<CLONE_NEWIPC> (since Linux 3.0)"
8263 msgstr "B<CLONE_NEWIPC> (Linux 3.0 以降)"
8264
8265 #. type: Plain text
8266 #: build/C/man2/setns.2:70
8267 msgid "I<fd> must refer to an IPC namespace."
8268 msgstr "I<fd> は IPC 名前空間を参照していなければならない。"
8269
8270 #. type: TP
8271 #: build/C/man2/setns.2:70
8272 #, no-wrap
8273 msgid "B<CLONE_NEWNET> (since Linux 3.0)"
8274 msgstr "B<CLONE_NEWNET> (Linux 3.0 以降)"
8275
8276 #. type: Plain text
8277 #: build/C/man2/setns.2:74
8278 msgid "I<fd> must refer to a network namespace."
8279 msgstr "I<fd> はネットワーク名前空間を参照していなければならない。"
8280
8281 #. type: TP
8282 #: build/C/man2/setns.2:74
8283 #, no-wrap
8284 msgid "B<CLONE_NEWNS> (since Linux 3.8)"
8285 msgstr "B<CLONE_NEWNS> (Linux 3.8 以降)"
8286
8287 #. type: Plain text
8288 #: build/C/man2/setns.2:78
8289 msgid "I<fd> must refer to a mount namespace."
8290 msgstr "I<fd> はマウント名前空間を参照していなければならない。"
8291
8292 #. type: TP
8293 #: build/C/man2/setns.2:78 build/C/man2/unshare.2:143
8294 #, no-wrap
8295 msgid "B<CLONE_NEWPID> (since Linux 3.8)"
8296 msgstr "B<CLONE_NEWPID> (Linux 3.8 以降)"
8297
8298 #. type: Plain text
8299 #: build/C/man2/setns.2:82
8300 msgid "I<fd> must refer to a descendant PID namespace."
8301 msgstr "I<fd> は子孫の PID 名前空間を参照していなければならない。"
8302
8303 #. type: TP
8304 #: build/C/man2/setns.2:82
8305 #, no-wrap
8306 msgid "B<CLONE_NEWTIME> (since Linux 5.8)"
8307 msgstr "B<CLONE_NEWTIME> (Linux 5.8 以降)"
8308
8309 #.  commit 76c12881a38aaa83e1eb4ce2fada36c3a732bad4
8310 #. type: Plain text
8311 #: build/C/man2/setns.2:87
8312 #, fuzzy
8313 #| msgid "I<fd> must refer to a user namespace."
8314 msgid "I<fd> must refer to a time namespace."
8315 msgstr "I<fd> はユーザー名前空間を参照していなければならない。"
8316
8317 #. type: TP
8318 #: build/C/man2/setns.2:87 build/C/man2/unshare.2:185
8319 #, no-wrap
8320 msgid "B<CLONE_NEWUSER> (since Linux 3.8)"
8321 msgstr "B<CLONE_NEWUSER> (Linux 3.8 以降)"
8322
8323 #. type: Plain text
8324 #: build/C/man2/setns.2:91
8325 msgid "I<fd> must refer to a user namespace."
8326 msgstr "I<fd> はユーザー名前空間を参照していなければならない。"
8327
8328 #. type: TP
8329 #: build/C/man2/setns.2:91
8330 #, no-wrap
8331 msgid "B<CLONE_NEWUTS> (since Linux 3.0)"
8332 msgstr "B<CLONE_NEWUTS> (Linux 3.0 以降)"
8333
8334 #. type: Plain text
8335 #: build/C/man2/setns.2:95
8336 msgid "I<fd> must refer to a UTS namespace."
8337 msgstr "I<fd> は UTS 名前空間を参照していなければならない。"
8338
8339 #. type: Plain text
8340 #: build/C/man2/setns.2:111
8341 msgid ""
8342 "Specifying I<nstype> as 0 suffices if the caller knows (or does not care)  "
8343 "what type of namespace is referred to by I<fd>.  Specifying a nonzero value "
8344 "for I<nstype> is useful if the caller does not know what type of namespace "
8345 "is referred to by I<fd> and wants to ensure that the namespace is of a "
8346 "particular type.  (The caller might not know the type of the namespace "
8347 "referred to by I<fd> if the file descriptor was opened by another process "
8348 "and, for example, passed to the caller via a UNIX domain socket.)"
8349 msgstr ""
8350 "呼び出し側が I<fd> がどのタイプの名前空間を参照しているかを知っている\n"
8351 "(もしくは気にする必要がない) 場合には、 I<nstype> に 0 を指定すれば十分\n"
8352 "である。呼び出し側が I<fd> がどのタイプの名前空間を参照しているかを\n"
8353 "知っておらず、かつ、特定のタイプの名前空間であることを保証したい場合、\n"
8354 "I<nstype> に 0 以外の値を指定するとよい。 (ファイルディスクリプターが別の\n"
8355 "プロセスによりオープンされ、例えば、UNIX ドメインソケット経由で呼び出し\n"
8356 "側に渡された場合などでは、呼び出し側が I<fd> がどのタイプの名前空間を\n"
8357 "参照しているかを知らない可能性がある。)"
8358
8359 #. type: SS
8360 #: build/C/man2/setns.2:111
8361 #, fuzzy, no-wrap
8362 #| msgid "I<fd> is not a valid file descriptor."
8363 msgid "fd is a PID file descriptor"
8364 msgstr "I<fd> が有効なファイルディスクリプターではない。"
8365
8366 #. type: Plain text
8367 #: build/C/man2/setns.2:123
8368 msgid ""
8369 "Since Linux 5.8, I<fd> may refer to a PID file descriptor obtained from "
8370 "B<pidfd_open>(2)  or B<clone>(3).  In this usage, B<setns>()  atomically "
8371 "moves the calling thread into one or more of the same namespaces as the "
8372 "thread referred to by I<fd>."
8373 msgstr ""
8374
8375 #. type: Plain text
8376 #: build/C/man2/setns.2:135
8377 msgid ""
8378 "The I<nstype> argument is a bit mask specified by ORing together I<one or "
8379 "more> of the B<CLONE_NEW*> namespace constants listed above.  The caller is "
8380 "moved into each of the target thread's namespaces that is specified in "
8381 "I<nstype>; the caller's memberships in the remaining namespaces are left "
8382 "unchanged."
8383 msgstr ""
8384
8385 #. type: Plain text
8386 #: build/C/man2/setns.2:139
8387 msgid ""
8388 "For example, the following code would move the caller into the same user, "
8389 "network, and UTS namespaces as PID 1234, but would leave the caller's other "
8390 "namespace memberships unchanged:"
8391 msgstr ""
8392
8393 #. type: Plain text
8394 #: build/C/man2/setns.2:144
8395 #, no-wrap
8396 msgid ""
8397 "int fd = pidfd_open(1234, 0);\n"
8398 "setns(fd, CLONE_NEWUSER | CLONE_NEWNET | CLONE_NEWUTS);\n"
8399 msgstr ""
8400
8401 #. type: SS
8402 #: build/C/man2/setns.2:147
8403 #, no-wrap
8404 msgid "Details for specific namespace types"
8405 msgstr ""
8406
8407 #. type: Plain text
8408 #: build/C/man2/setns.2:150
8409 msgid ""
8410 "Note the following details and restrictions when reassociating with specific "
8411 "namespace types:"
8412 msgstr ""
8413
8414 #. type: TP
8415 #: build/C/man2/setns.2:150
8416 #, no-wrap
8417 msgid "User namespaces"
8418 msgstr ""
8419
8420 #.  See kernel/user_namespace.c:userns_install() [3.8 source]
8421 #. type: Plain text
8422 #: build/C/man2/setns.2:161
8423 msgid ""
8424 "A process reassociating itself with a user namespace must have the "
8425 "B<CAP_SYS_ADMIN> capability in the target user namespace.  (This necessarily "
8426 "implies that it is only possible to join a descendant user namespace.)  Upon "
8427 "successfully joining a user namespace, a process is granted all capabilities "
8428 "in that namespace, regardless of its user and group IDs."
8429 msgstr ""
8430
8431 #. type: Plain text
8432 #: build/C/man2/setns.2:164
8433 msgid "A multithreaded process may not change user namespace with B<setns>()."
8434 msgstr ""
8435
8436 #. type: Plain text
8437 #: build/C/man2/setns.2:171
8438 msgid ""
8439 "It is not permitted to use B<setns>()  to reenter the caller's current user "
8440 "namespace.  This prevents a caller that has dropped capabilities from "
8441 "regaining those capabilities via a call to B<setns>()."
8442 msgstr ""
8443
8444 #.  commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71
8445 #.  https://lwn.net/Articles/543273/
8446 #. type: Plain text
8447 #: build/C/man2/setns.2:181
8448 msgid ""
8449 "For security reasons, a process can't join a new user namespace if it is "
8450 "sharing filesystem-related attributes (the attributes whose sharing is "
8451 "controlled by the B<clone>(2)  B<CLONE_FS> flag) with another process."
8452 msgstr ""
8453
8454 #. type: Plain text
8455 #: build/C/man2/setns.2:184
8456 msgid "For further details on user namespaces, see B<user_namespaces>(7)."
8457 msgstr "ユーザー名前空間の詳細は B<user_namespaces>(7) を参照。"
8458
8459 #. type: TP
8460 #: build/C/man2/setns.2:184
8461 #, no-wrap
8462 msgid "Mount namespaces"
8463 msgstr ""
8464
8465 #. type: Plain text
8466 #: build/C/man2/setns.2:193
8467 #, fuzzy
8468 #| msgid ""
8469 #| "A process may not be reassociated with a new mount namespace if it is "
8470 #| "multithreaded.  Changing the mount namespace requires that the caller "
8471 #| "possess both B<CAP_SYS_CHROOT> and B<CAP_SYS_ADMIN> capabilities in its "
8472 #| "own user namespace and B<CAP_SYS_ADMIN> in the target mount namespace.  "
8473 #| "See B<user_namespaces>(7)  for details on the interaction of user "
8474 #| "namespaces and mount namespaces."
8475 msgid ""
8476 "Changing the mount namespace requires that the caller possess both "
8477 "B<CAP_SYS_CHROOT> and B<CAP_SYS_ADMIN> capabilities in its own user "
8478 "namespace and B<CAP_SYS_ADMIN> in the user namespace that owns the target "
8479 "mount namespace."
8480 msgstr ""
8481 "プロセスがマルチスレッドの場合、そのプロセスを新しいマウント名前空間に関連付"
8482 "けし直すことは許可されていない。 マウント名前空間を変更するには、呼び出し元の"
8483 "プロセスが、 自分自身のユーザー名前空間において B<CAP_SYS_CHROOT> と "
8484 "B<CAP_SYS_ADMIN> の両方のケーパビリティを持っており、 変更後のマウント名前空"
8485 "間で B<CAP_SYS_ADMIN> ケーパビリティを持っていなければならない。 ユーザー名前"
8486 "空間とマウント名前空間の関係の詳細は B<user_namespaces>(7) を参照。"
8487
8488 #.  Above check is in fs/namespace.c:mntns_install() [3.8 source]
8489 #. type: Plain text
8490 #: build/C/man2/setns.2:201
8491 msgid ""
8492 "A process can't join a new mount namespace if it is sharing filesystem-"
8493 "related attributes (the attributes whose sharing is controlled by the "
8494 "B<clone>(2)  B<CLONE_FS> flag) with another process."
8495 msgstr ""
8496
8497 #. type: Plain text
8498 #: build/C/man2/setns.2:205
8499 msgid ""
8500 "See B<user_namespaces>(7)  for details on the interaction of user namespaces "
8501 "and mount namespaces."
8502 msgstr ""
8503
8504 #. type: TP
8505 #: build/C/man2/setns.2:205
8506 #, no-wrap
8507 msgid "PID namespaces"
8508 msgstr ""
8509
8510 #. type: Plain text
8511 #: build/C/man2/setns.2:212
8512 msgid ""
8513 "In order to reassociate itself with a new PID namespace, the caller must "
8514 "have the B<CAP_SYS_ADMIN> capability both in its own user namespace and in "
8515 "the user namespace that owns the target PID namespace."
8516 msgstr ""
8517
8518 #. type: Plain text
8519 #: build/C/man2/setns.2:219
8520 msgid ""
8521 "Reassociating the PID namespace has somewhat different from other namespace "
8522 "types.  Reassociating the calling thread with a PID namespace changes only "
8523 "the PID namespace that subsequently created child processes of the caller "
8524 "will be placed in; it does not change the PID namespace of the caller itself."
8525 msgstr ""
8526
8527 #. type: Plain text
8528 #: build/C/man2/setns.2:223
8529 msgid ""
8530 "Reassociating with a PID namespace is allowed only if the target PID "
8531 "namespace is a descendant (child, grandchild, etc.)  of, or is the same as, "
8532 "the current PID namespace of the caller."
8533 msgstr ""
8534
8535 #. type: Plain text
8536 #: build/C/man2/setns.2:226
8537 msgid "For further details on PID namespaces, see B<pid_namespaces>(7)."
8538 msgstr "PID 名前空間の詳細は B<pid_namespaces>(7) を参照。"
8539
8540 #. type: TP
8541 #: build/C/man2/setns.2:226
8542 #, no-wrap
8543 msgid "Cgroup namespaces"
8544 msgstr ""
8545
8546 #. type: Plain text
8547 #: build/C/man2/setns.2:233
8548 msgid ""
8549 "In order to reassociate itself with a new cgroup namespace, the caller must "
8550 "have the B<CAP_SYS_ADMIN> capability both in its own user namespace and in "
8551 "the user namespace that owns the target cgroup namespace."
8552 msgstr ""
8553
8554 #. type: Plain text
8555 #: build/C/man2/setns.2:238
8556 msgid ""
8557 "Using B<setns>()  to change the caller's cgroup namespace does not change "
8558 "the caller's cgroup memberships."
8559 msgstr ""
8560
8561 #. type: TP
8562 #: build/C/man2/setns.2:238
8563 #, no-wrap
8564 msgid "Network, IPC, time, and UTS namespaces"
8565 msgstr ""
8566
8567 #. type: Plain text
8568 #: build/C/man2/setns.2:245
8569 msgid ""
8570 "In order to reassociate itself with a new network, IPC, time, or UTS "
8571 "namespace, the caller must have the B<CAP_SYS_ADMIN> capability both in its "
8572 "own user namespace and in the user namespace that owns the target namespace."
8573 msgstr ""
8574
8575 #. type: Plain text
8576 #: build/C/man2/setns.2:252
8577 msgid ""
8578 "On success, B<setns>()  returns 0.  On failure, -1 is returned and I<errno> "
8579 "is set to indicate the error."
8580 msgstr ""
8581 "成功すると B<setns>() は 0 を返す。 失敗すると、 -1 が返され、 I<errno> にエ"
8582 "ラーを示す値が設定される。"
8583
8584 #. type: Plain text
8585 #: build/C/man2/setns.2:257
8586 msgid "I<fd> is not a valid file descriptor."
8587 msgstr "I<fd> が有効なファイルディスクリプターではない。"
8588
8589 #. type: Plain text
8590 #: build/C/man2/setns.2:262
8591 msgid ""
8592 "I<fd> refers to a namespace whose type does not match that specified in "
8593 "I<nstype>."
8594 msgstr ""
8595 "I<fd> が I<nstype> で指定されたタイプと一致しない名前空間を参照している。"
8596
8597 #. type: Plain text
8598 #: build/C/man2/setns.2:266
8599 msgid ""
8600 "There is problem with reassociating the thread with the specified namespace."
8601 msgstr "スレッドを指定された名前空間に関連付けし直す際に問題が発生した。"
8602
8603 #. type: Plain text
8604 #: build/C/man2/setns.2:271
8605 msgid ""
8606 "The caller tried to join an ancestor (parent, grandparent, and so on)  PID "
8607 "namespace."
8608 msgstr "呼び出し元が先祖 (親や親の親など) の PID 名前空間に参加しようとした。"
8609
8610 #. type: Plain text
8611 #: build/C/man2/setns.2:275
8612 msgid ""
8613 "The caller attempted to join the user namespace in which it is already a "
8614 "member."
8615 msgstr "自分がすでにメンバーとなっているユーザー名前空間に参加しようとした。"
8616
8617 #.  commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71
8618 #. type: Plain text
8619 #: build/C/man2/setns.2:282
8620 msgid ""
8621 "The caller shares filesystem (B<CLONE_FS>)  state (in particular, the root "
8622 "directory)  with other processes and tried to join a new user namespace."
8623 msgstr ""
8624 "呼び出し元が他のプロセスとファイルシステム状態 (特に root ディレクトリ) を共"
8625 "有していて (B<CLONE_FS>)、 新しいユーザー名前空間に参加しようとした。"
8626
8627 #.  See kernel/user_namespace.c::userns_install() [kernel 3.15 sources]
8628 #. type: Plain text
8629 #: build/C/man2/setns.2:286
8630 msgid "The caller is multithreaded and tried to join a new user namespace."
8631 msgstr ""
8632 "呼び出し元プロセスがマルチスレッドで、新しいユーザー名前空間に参加しようとし"
8633 "た。"
8634
8635 #. type: Plain text
8636 #: build/C/man2/setns.2:292
8637 msgid ""
8638 "I<fd> is a PID file descriptor and I<nstype> is invalid (e.g., it is 0)."
8639 msgstr ""
8640
8641 #. type: Plain text
8642 #: build/C/man2/setns.2:295
8643 msgid "Cannot allocate sufficient memory to change the specified namespace."
8644 msgstr "指定された名前空間に変更するのに必要なメモリーが割り当てられない。"
8645
8646 #. type: Plain text
8647 #: build/C/man2/setns.2:299
8648 msgid ""
8649 "The calling thread did not have the required capability for this operation."
8650 msgstr ""
8651 "呼び出し元スレッドはこの操作を行うのに必要なケーパビリティを持っていなかっ"
8652 "た。"
8653
8654 #. type: Plain text
8655 #: build/C/man2/setns.2:304
8656 msgid ""
8657 "I<fd> is a PID file descriptor but the process it refers to no longer exists "
8658 "(i.e., it has terminated and been waited on)."
8659 msgstr ""
8660
8661 #. type: Plain text
8662 #: build/C/man2/setns.2:309
8663 msgid ""
8664 "The B<setns>()  system call first appeared in Linux in kernel 3.0; library "
8665 "support was added to glibc in version 2.14."
8666 msgstr ""
8667 "B<setns>() システムコールはカーネル 3.0 で Linux に初めて登場した。\n"
8668 "ライブラリによるサポートは glibc バージョン 2.14 を追加された。"
8669
8670 #. type: Plain text
8671 #: build/C/man2/setns.2:313
8672 msgid "The B<setns>()  system call is Linux-specific."
8673 msgstr "B<setns>() システムコールは Linux 固有である。"
8674
8675 #. type: Plain text
8676 #: build/C/man2/setns.2:318
8677 msgid ""
8678 "For further information on the I</proc/[pid]/ns/> magic links, see "
8679 "B<namespaces>(7)."
8680 msgstr "マジックリング I</proc/[pid]/ns/> の詳細は B<namespaces>(7) を参照。"
8681
8682 #. type: Plain text
8683 #: build/C/man2/setns.2:324
8684 msgid ""
8685 "Not all of the attributes that can be shared when a new thread is created "
8686 "using B<clone>(2)  can be changed using B<setns>()."
8687 msgstr ""
8688 "新しいスレッドが B<clone>(2) を使って作成された際に共有できる全ての属性を、\n"
8689 "B<setns>() を使って変更できるわけではない。"
8690
8691 #. type: Plain text
8692 #: build/C/man2/setns.2:333
8693 msgid ""
8694 "The program below takes two or more arguments.  The first argument specifies "
8695 "the pathname of a namespace file in an existing I</proc/[pid]/ns/> "
8696 "directory.  The remaining arguments specify a command and its arguments.  "
8697 "The program opens the namespace file, joins that namespace using B<setns>(), "
8698 "and executes the specified command inside that namespace."
8699 msgstr ""
8700 "以下のプログラムは 2 つ以上の引き数を取る。 最初の引き数には、 既存の I</"
8701 "proc/[pid]/ns/> ディレクトリの名前空間ファイルのパス名を指定する。 残りの引き"
8702 "数は、コマンドとその引き数を指定する。 このプログラムは名前空間ファイルをオー"
8703 "プンし、 B<setns>() を使って名前空間に参加し、 指定されたコマンドをその名前空"
8704 "間内で実行する。"
8705
8706 #. type: Plain text
8707 #: build/C/man2/setns.2:343
8708 msgid ""
8709 "The following shell session demonstrates the use of this program (compiled "
8710 "as a binary named I<ns_exec>)  in conjunction with the B<CLONE_NEWUTS> "
8711 "example program in the B<clone>(2)  man page (complied as a binary named "
8712 "I<newuts>)."
8713 msgstr ""
8714 "以下のシェルセッションでは、 このプログラム (I<ns_exec> という名前のバイナリ"
8715 "としてコンパイルされている)を、 B<clone>(2) のマニュアルページの "
8716 "B<CLONE_NEWUTS> のサンプルプログラムと組み合わせて使っている。"
8717
8718 #. type: Plain text
8719 #: build/C/man2/setns.2:351
8720 msgid ""
8721 "We begin by executing the example program in B<clone>(2)  in the "
8722 "background.  That program creates a child in a separate UTS namespace.  The "
8723 "child changes the hostname in its namespace, and then both processes display "
8724 "the hostnames in their UTS namespaces, so that we can see that they are "
8725 "different."
8726 msgstr ""
8727 "まず、 B<clone>(2) のサンプルプログラムをバックグラウンドで実行する。 このプ"
8728 "ログラムは、 別の UTS 名前空間で子プロセスを作成する。 子プロセスは自分の名前"
8729 "空間内でホスト名を変更する。 それから、 親プロセスと子プロセスの両方でそれぞ"
8730 "れの UTS 名前空間のホスト名を表示し、 2 つのホスト名が違うことが確認できる。"
8731
8732 #. type: Plain text
8733 #: build/C/man2/setns.2:363
8734 #, no-wrap
8735 msgid ""
8736 "$ B<su>                   # Need privilege for namespace operations\n"
8737 "Password:\n"
8738 "# B<./newuts bizarro &>\n"
8739 "[1] 3549\n"
8740 "clone() returned 3550\n"
8741 "uts.nodename in child:  bizarro\n"
8742 "uts.nodename in parent: antero\n"
8743 "# B<uname -n>             # Verify hostname in the shell\n"
8744 "antero\n"
8745 msgstr ""
8746 "$ B<su>                   # 名前空間の操作には特権が必要\n"
8747 "Password:\n"
8748 "# B<./newuts bizarro &>\n"
8749 "[1] 3549\n"
8750 "clone() returned 3550\n"
8751 "uts.nodename in child:  bizarro\n"
8752 "uts.nodename in parent: antero\n"
8753 "# B<uname -n>             # シェルでホスト名を確認\n"
8754 "antero\n"
8755
8756 #. type: Plain text
8757 #: build/C/man2/setns.2:370
8758 msgid ""
8759 "We then run the program shown below, using it to execute a shell.  Inside "
8760 "that shell, we verify that the hostname is the one set by the child created "
8761 "by the first program:"
8762 msgstr ""
8763 "次に、以下のプログラムを使ってシェルを実行する。 このシェルの中では、ホスト名"
8764 "が最初のプログラムで作成された子プロセスが設定したホスト名になっていることを"
8765 "確認できる。"
8766
8767 #. type: Plain text
8768 #: build/C/man2/setns.2:376
8769 #, no-wrap
8770 msgid ""
8771 "# B<./ns_exec /proc/3550/ns/uts /bin/bash>\n"
8772 "# B<uname -n>             # Executed in shell started by ns_exec\n"
8773 "bizarro\n"
8774 msgstr ""
8775 "# B<./ns_exec /proc/3550/ns/uts /bin/bash>\n"
8776 "# B<uname -n>             #  ns_exec で起動されたシェル内で実行\n"
8777 "bizarro\n"
8778
8779 #. type: Plain text
8780 #: build/C/man2/setns.2:386
8781 #, no-wrap
8782 msgid ""
8783 "#define _GNU_SOURCE\n"
8784 "#include E<lt>fcntl.hE<gt>\n"
8785 "#include E<lt>sched.hE<gt>\n"
8786 "#include E<lt>unistd.hE<gt>\n"
8787 "#include E<lt>stdlib.hE<gt>\n"
8788 "#include E<lt>stdio.hE<gt>\n"
8789 msgstr ""
8790 "#define _GNU_SOURCE\n"
8791 "#include E<lt>fcntl.hE<gt>\n"
8792 "#include E<lt>sched.hE<gt>\n"
8793 "#include E<lt>unistd.hE<gt>\n"
8794 "#include E<lt>stdlib.hE<gt>\n"
8795 "#include E<lt>stdio.hE<gt>\n"
8796
8797 #. type: Plain text
8798 #: build/C/man2/setns.2:394
8799 #, no-wrap
8800 msgid ""
8801 "int\n"
8802 "main(int argc, char *argv[])\n"
8803 "{\n"
8804 "    int fd;\n"
8805 msgstr ""
8806 "int\n"
8807 "main(int argc, char *argv[])\n"
8808 "{\n"
8809 "    int fd;\n"
8810
8811 #. type: Plain text
8812 #: build/C/man2/setns.2:399
8813 #, no-wrap
8814 msgid ""
8815 "    if (argc E<lt> 3) {\n"
8816 "        fprintf(stderr, \"%s /proc/PID/ns/FILE cmd args...\\en\", argv[0]);\n"
8817 "        exit(EXIT_FAILURE);\n"
8818 "    }\n"
8819 msgstr ""
8820 "    if (argc E<lt> 3) {\n"
8821 "        fprintf(stderr, \"%s /proc/PID/ns/FILE cmd args...\\en\", argv[0]);\n"
8822 "        exit(EXIT_FAILURE);\n"
8823 "    }\n"
8824
8825 #. type: Plain text
8826 #: build/C/man2/setns.2:403
8827 #, no-wrap
8828 msgid ""
8829 "    /* Get file descriptor for namespace; the file descriptor is opened\n"
8830 "       with O_CLOEXEC so as to ensure that it is not inherited by the\n"
8831 "       program that is later executed. */\n"
8832 msgstr ""
8833
8834 #. type: Plain text
8835 #: build/C/man2/setns.2:407
8836 #, no-wrap
8837 msgid ""
8838 "    fd = open(argv[1], O_RDONLY | O_CLOEXEC);\n"
8839 "    if (fd == -1)\n"
8840 "        errExit(\"open\");\n"
8841 msgstr ""
8842 "    fd = open(argv[1], O_RDONLY | O_CLOEXEC);\n"
8843 "    if (fd == -1)\n"
8844 "        errExit(\"open\");\n"
8845
8846 #. type: Plain text
8847 #: build/C/man2/setns.2:410
8848 #, no-wrap
8849 msgid ""
8850 "    if (setns(fd, 0) == -1)       /* Join that namespace */\n"
8851 "        errExit(\"setns\");\n"
8852 msgstr ""
8853 "    if (setns(fd, 0) == -1)       /* 名前空間に参加 */\n"
8854 "        errExit(\"setns\");\n"
8855
8856 #. type: Plain text
8857 #: build/C/man2/setns.2:414
8858 #, no-wrap
8859 msgid ""
8860 "    execvp(argv[2], &argv[2]);    /* Execute a command in namespace */\n"
8861 "    errExit(\"execvp\");\n"
8862 "}\n"
8863 msgstr ""
8864 "    execvp(argv[2], &argv[2]);     /* 名前空間内でコマンドを実行 */\n"
8865 "    errExit(\"execvp\");\n"
8866 "}\n"
8867
8868 #. type: Plain text
8869 #: build/C/man2/setns.2:423
8870 msgid ""
8871 "B<nsenter>(1), B<clone>(2), B<fork>(2), B<unshare>(2), B<vfork>(2), "
8872 "B<namespaces>(7), B<unix>(7)"
8873 msgstr " B<nsenter>(1), B<clone>(2), B<fork>(2), B<unshare>(2), B<vfork>(2), B<namespaces>(7), B<unix>(7)"
8874
8875 #. type: TH
8876 #: build/C/man2/unshare.2:20
8877 #, no-wrap
8878 msgid "UNSHARE"
8879 msgstr "UNSHARE"
8880
8881 #. type: TH
8882 #: build/C/man2/unshare.2:20
8883 #, no-wrap
8884 msgid "2020-04-11"
8885 msgstr " 2020-04-11"
8886
8887 #. type: Plain text
8888 #: build/C/man2/unshare.2:23
8889 msgid "unshare - disassociate parts of the process execution context"
8890 msgstr "unshare - プロセス実行コンテキストの一部を分離する"
8891
8892 #. type: Plain text
8893 #: build/C/man2/unshare.2:29
8894 #, no-wrap
8895 msgid "B<int unshare(int >I<flags>B<);>\n"
8896 msgstr "B<int unshare(int >I<flags>B<);>\n"
8897
8898 #. type: Plain text
8899 #: build/C/man2/unshare.2:42
8900 msgid ""
8901 "B<unshare>()  allows a process (or thread) to disassociate parts of its "
8902 "execution context that are currently being shared with other processes (or "
8903 "threads).  Part of the execution context, such as the mount namespace, is "
8904 "shared implicitly when a new process is created using B<fork>(2)  or "
8905 "B<vfork>(2), while other parts, such as virtual memory, may be shared by "
8906 "explicit request when creating a process or thread using B<clone>(2)."
8907 msgstr "B<unshare>() を使うと、プロセス (やスレッド) は他のプロセス (やスレッド) と現在共有している 実行コンテキストの一部を分離することができる。 実行コンテキストの一部、たとえばマウント名前空間 (mount namespace)  などは、新しいプロセスを B<fork>(2)  または B<vfork>(2)  を使って生成したときに、暗黙のうちに共有される。 一方、仮想メモリーなどは、 B<clone>(2) を使ってプロセスやスレッドを生成するときに、明示的に共有することを要求できる。"
8908
8909 #. type: Plain text
8910 #: build/C/man2/unshare.2:47
8911 msgid ""
8912 "The main use of B<unshare>()  is to allow a process to control its shared "
8913 "execution context without creating a new process."
8914 msgstr ""
8915 "B<unshare>()  の主な利用法は、プロセスが新しいプロセスを生成することなく、 共"
8916 "有実行コンテキストを制御することである。"
8917
8918 #. type: Plain text
8919 #: build/C/man2/unshare.2:54
8920 msgid ""
8921 "The I<flags> argument is a bit mask that specifies which parts of the "
8922 "execution context should be unshared.  This argument is specified by ORing "
8923 "together zero or more of the following constants:"
8924 msgstr ""
8925 "I<flags> 引き数はビットマスクであり、 実行コンテキストのどの部分の共有を解除"
8926 "するかを表す。 この引き数は、以下の定数の 0 個以上の OR で指定する:"
8927
8928 #. type: TP
8929 #: build/C/man2/unshare.2:54
8930 #, no-wrap
8931 msgid "B<CLONE_FILES>"
8932 msgstr "B<CLONE_FILES>"
8933
8934 #. type: Plain text
8935 #: build/C/man2/unshare.2:62
8936 msgid ""
8937 "Reverse the effect of the B<clone>(2)  B<CLONE_FILES> flag.  Unshare the "
8938 "file descriptor table, so that the calling process no longer shares its file "
8939 "descriptors with any other process."
8940 msgstr ""
8941 "B<clone>(2)  B<CLONE_FILES> フラグの効果を取り消す。 ファイルディスクリプター"
8942 "テーブルを共有させず、 呼び出し元プロセスは他のプロセスとファイルディスクリプ"
8943 "ターを共有しなくなる。"
8944
8945 #. type: TP
8946 #: build/C/man2/unshare.2:62
8947 #, no-wrap
8948 msgid "B<CLONE_FS>"
8949 msgstr "B<CLONE_FS>"
8950
8951 #. type: Plain text
8952 #: build/C/man2/unshare.2:76
8953 msgid ""
8954 "Reverse the effect of the B<clone>(2)  B<CLONE_FS> flag.  Unshare filesystem "
8955 "attributes, so that the calling process no longer shares its root directory "
8956 "(B<chroot>(2)), current directory (B<chdir>(2)), or umask (B<umask>(2))  "
8957 "attributes with any other process."
8958 msgstr ""
8959 "B<clone>(2)  B<CLONE_FS> フラグの効果を取り消す。ファイルシステム属性を共有さ"
8960 "せず、呼び出し元プロセスは、ルートディレクトリ (B<chroot>(2))、カレントディレ"
8961 "クトリ (B<chdir>(2))、 umask (B<umask>(2)) を他のプロセスと共有しなくなる。"
8962
8963 #. type: Plain text
8964 #: build/C/man2/unshare.2:88
8965 #, fuzzy
8966 #| msgid ""
8967 #| "This flag has the same effect as the B<clone>(2)  B<CLONE_NEWUTS> flag.  "
8968 #| "Unshare the UTS IPC namespace, so that the calling process has a private "
8969 #| "copy of the UTS namespace which is not shared with any other process.  "
8970 #| "Use of B<CLONE_NEWUTS> requires the B<CAP_SYS_ADMIN> capability."
8971 msgid ""
8972 "This flag has the same effect as the B<clone>(2)  B<CLONE_NEWCGROUP> flag.  "
8973 "Unshare the cgroup namespace.  Use of B<CLONE_NEWCGROUP> requires the "
8974 "B<CAP_SYS_ADMIN> capability."
8975 msgstr ""
8976 "このフラグは B<clone>(2) B<CLONE_NEWUTS> フラグと同じ効果を持つ。 UTS\n"
8977 "IPC 名前空間を共有せず、呼び出し元プロセスは他のプロセスとは共有しない\n"
8978 "固有の UTS IPC 名前空間のコピーを持つ。 このフラグを指定すると、\n"
8979 "B<CLONE_FS> も暗黙のうちに指定される。B<CLONE_NEWUTS> を使用するには\n"
8980 "B<CAP_SYS_ADMIN> ケーパビリティが必要である。"
8981
8982 #. type: Plain text
8983 #: build/C/man2/unshare.2:105
8984 msgid ""
8985 "This flag has the same effect as the B<clone>(2)  B<CLONE_NEWIPC> flag.  "
8986 "Unshare the IPC namespace, so that the calling process has a private copy of "
8987 "the IPC namespace which is not shared with any other process.  Specifying "
8988 "this flag automatically implies B<CLONE_SYSVSEM> as well.  Use of "
8989 "B<CLONE_NEWIPC> requires the B<CAP_SYS_ADMIN> capability."
8990 msgstr "このフラグは B<clone>(2) B<CLONE_NEWIPC> フラグと同じ効果を持つ。 IPC 名前空間を共有せず、呼び出し元プロセスは 他のプロセスとは共有しない固有の IPC 名前空間のコピーを持つ。 このフラグを指定すると、 B<CLONE_SYSVSEM> も暗黙のうちに指定される。 B<CLONE_NEWIPC> を使用するには B<CAP_SYS_ADMIN> ケーパビリティが必要である。"
8991
8992 #. type: Plain text
8993 #: build/C/man2/unshare.2:120
8994 msgid ""
8995 "This flag has the same effect as the B<clone>(2)  B<CLONE_NEWNET> flag.  "
8996 "Unshare the network namespace, so that the calling process is moved into a "
8997 "new network namespace which is not shared with any previously existing "
8998 "process.  Use of B<CLONE_NEWNET> requires the B<CAP_SYS_ADMIN> capability."
8999 msgstr ""
9000 "このフラグは B<clone>(2) B<CLONE_NEWNET> フラグと同じ効果を持つ。ネット\n"
9001 "ワーク名前空間を共有せず、呼び出し元プロセスは他のプロセスとは共有しな\n"
9002 "い固有のネットワーク名前空間のコピーを持つ。B<CLONE_NEWNET> を使用する\n"
9003 "には B<CAP_SYS_ADMIN> ケーパビリティが必要である。"
9004
9005 #. type: TP
9006 #: build/C/man2/unshare.2:120
9007 #, no-wrap
9008 msgid "B<CLONE_NEWNS>"
9009 msgstr "B<CLONE_NEWNS>"
9010
9011 #.  These flag name are inconsistent:
9012 #.  CLONE_NEWNS does the same thing in clone(), but CLONE_VM,
9013 #.  CLONE_FS, and CLONE_FILES reverse the action of the clone()
9014 #.  flags of the same name.
9015 #. type: Plain text
9016 #: build/C/man2/unshare.2:143
9017 msgid ""
9018 "This flag has the same effect as the B<clone>(2)  B<CLONE_NEWNS> flag.  "
9019 "Unshare the mount namespace, so that the calling process has a private copy "
9020 "of its namespace which is not shared with any other process.  Specifying "
9021 "this flag automatically implies B<CLONE_FS> as well.  Use of B<CLONE_NEWNS> "
9022 "requires the B<CAP_SYS_ADMIN> capability.  For further information, see "
9023 "B<mount_namespaces>(7)."
9024 msgstr "このフラグは B<clone>(2) B<CLONE_NEWNS> フラグと同じ効果を持つ。 マウント名前空間を共有せず、呼び出し元プロセスは 他のプロセスとは共有しない固有の名前空間のコピーを持つ。 このフラグを指定すると、 B<CLONE_FS> も暗黙のうちに指定される。 B<CLONE_NEWNS> を使用するには B<CAP_SYS_ADMIN> ケーパビリティが必要である。詳細は B<mount_namespaces>(7) を参照。"
9025
9026 #. type: Plain text
9027 #: build/C/man2/unshare.2:170
9028 msgid ""
9029 "This flag has the same effect as the B<clone>(2)  B<CLONE_NEWPID> flag.  "
9030 "Unshare the PID namespace, so that the calling process has a new PID "
9031 "namespace for its children which is not shared with any previously existing "
9032 "process.  The calling process is I<not> moved into the new namespace.  The "
9033 "first child created by the calling process will have the process ID 1 and "
9034 "will assume the role of B<init>(1)  in the new namespace.  B<CLONE_NEWPID> "
9035 "automatically implies B<CLONE_THREAD> as well.  Use of B<CLONE_NEWPID> "
9036 "requires the B<CAP_SYS_ADMIN> capability.  For further information, see "
9037 "B<pid_namespaces>(7)."
9038 msgstr ""
9039 "このフラグは B<clone>(2) B<CLONE_NEWPID> フラグと同じ効果を持つ。 PID 名前空"
9040 "間を共有しない。 呼び出し元プロセスは、 すでに存在するどのプロセスとも共有さ"
9041 "れない新しい PID 名前空間を、 自身の子プロセス用に持つことになる。 このプロセ"
9042 "スにより作成される最初の子プロセスはプロセス ID 1 を持ち、 この新しい名前空間"
9043 "において B<init>(1) の役割を持つとみなされる。 B<CLONE_NEWPID> を指定すると、"
9044 "自動的に B<CLONE_THREAD> も指定されたものとみなされる。 B<CLONE_NEWPID> を使"
9045 "用するには B<CAP_SYS_ADMIN> ケーパビリティが必要である。 詳細な情報は "
9046 "B<pid_namespaces>(7) を参照。"
9047
9048 #. type: TP
9049 #: build/C/man2/unshare.2:170
9050 #, no-wrap
9051 msgid "B<CLONE_NEWTIME> (since Linux 5.6)"
9052 msgstr "B<CLONE_NEWTIME> (Linux 5.6 以降)"
9053
9054 #. type: Plain text
9055 #: build/C/man2/unshare.2:185
9056 #, fuzzy
9057 #| msgid ""
9058 #| "This flag has the same effect as the B<clone>(2)  B<CLONE_NEWPID> flag.  "
9059 #| "Unshare the PID namespace, so that the calling process has a new PID "
9060 #| "namespace for its children which is not shared with any previously "
9061 #| "existing process.  The calling process is I<not> moved into the new "
9062 #| "namespace.  The first child created by the calling process will have the "
9063 #| "process ID 1 and will assume the role of B<init>(1)  in the new "
9064 #| "namespace.  B<CLONE_NEWPID> automatically implies B<CLONE_THREAD> as "
9065 #| "well.  Use of B<CLONE_NEWPID> requires the B<CAP_SYS_ADMIN> capability.  "
9066 #| "For further information, see B<pid_namespaces>(7)."
9067 msgid ""
9068 "Unshare the time namespace, so that the calling process has a new time "
9069 "namespace for its children which is not shared with any previously existing "
9070 "process.  The calling process is I<not> moved into the new namespace.  Use "
9071 "of B<CLONE_NEWTIME> requires the B<CAP_SYS_ADMIN> capability.  For further "
9072 "information, see B<time_namespaces>(7)."
9073 msgstr ""
9074 "このフラグは B<clone>(2) B<CLONE_NEWPID> フラグと同じ効果を持つ。 PID 名前空"
9075 "間を共有しない。 呼び出し元プロセスは、 すでに存在するどのプロセスとも共有さ"
9076 "れない新しい PID 名前空間を、 自身の子プロセス用に持つことになる。 このプロセ"
9077 "スにより作成される最初の子プロセスはプロセス ID 1 を持ち、 この新しい名前空間"
9078 "において B<init>(1) の役割を持つとみなされる。 B<CLONE_NEWPID> を指定すると、"
9079 "自動的に B<CLONE_THREAD> も指定されたものとみなされる。 B<CLONE_NEWPID> を使"
9080 "用するには B<CAP_SYS_ADMIN> ケーパビリティが必要である。 詳細な情報は "
9081 "B<pid_namespaces>(7) を参照。"
9082
9083 #. type: Plain text
9084 #: build/C/man2/unshare.2:199
9085 msgid ""
9086 "This flag has the same effect as the B<clone>(2)  B<CLONE_NEWUSER> flag.  "
9087 "Unshare the user namespace, so that the calling process is moved into a new "
9088 "user namespace which is not shared with any previously existing process.  As "
9089 "with the child process created by B<clone>(2)  with the B<CLONE_NEWUSER> "
9090 "flag, the caller obtains a full set of capabilities in the new namespace."
9091 msgstr ""
9092 "このフラグは B<clone>(2) B<CLONE_NEWUSER> フラグと同じ効果を持つ。 ユーザー名"
9093 "前空間を共有せず、 呼び出し元プロセスはすでに存在するどのプロセスとも共有され"
9094 "ない新しいユーザー名前空間に移動される。 B<CLONE_NEWUSER> フラグを指定して "
9095 "B<clone>(2) で作成された子プロセスと同様に、 呼び出し元は新しい名前空間ですべ"
9096 "てのケーパビリティを獲得する。"
9097
9098 #.  commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71
9099 #.  https://lwn.net/Articles/543273/
9100 #. type: Plain text
9101 #: build/C/man2/unshare.2:215
9102 msgid ""
9103 "B<CLONE_NEWUSER> requires that the calling process is not threaded; "
9104 "specifying B<CLONE_NEWUSER> automatically implies B<CLONE_THREAD>.  Since "
9105 "Linux 3.9, B<CLONE_NEWUSER> also automatically implies B<CLONE_FS>.  "
9106 "B<CLONE_NEWUSER> requires that the user ID and group ID of the calling "
9107 "process are mapped to user IDs and group IDs in the user namespace of the "
9108 "calling process at the time of the call."
9109 msgstr ""
9110 "B<CLONE_NEWUSER> を使うには、呼び出し元プロセスがスレッド化されていないことが"
9111 "必要である。 B<CLONE_NEWUSER> を指定すると、自動的に B<CLONE_THREAD> が指定さ"
9112 "れたものとみなされる。 Linux 3.9 以降では、 B<CLONE_NEWUSER> が指定された場"
9113 "合 B<CLONE_FS> も指定されたとみなされる。 B<CLONE_NEWUSER> を使うには、呼び出"
9114 "し元プロセスのユーザー ID とグループ ID が、 呼び出した時点で、 呼び出し元プ"
9115 "ロセスのユーザー名前空間のユーザー ID とグループ ID にマッピングされている必"
9116 "要がある。"
9117
9118 #. type: Plain text
9119 #: build/C/man2/unshare.2:218
9120 msgid "For further information on user namespaces, see B<user_namespaces>(7)."
9121 msgstr "ユーザー名前空間の詳細は B<user_namespaces>(7) を参照。"
9122
9123 #. type: Plain text
9124 #: build/C/man2/unshare.2:232
9125 msgid ""
9126 "This flag has the same effect as the B<clone>(2)  B<CLONE_NEWUTS> flag.  "
9127 "Unshare the UTS IPC namespace, so that the calling process has a private "
9128 "copy of the UTS namespace which is not shared with any other process.  Use "
9129 "of B<CLONE_NEWUTS> requires the B<CAP_SYS_ADMIN> capability."
9130 msgstr ""
9131 "このフラグは B<clone>(2) B<CLONE_NEWUTS> フラグと同じ効果を持つ。 UTS\n"
9132 "IPC 名前空間を共有せず、呼び出し元プロセスは他のプロセスとは共有しない\n"
9133 "固有の UTS IPC 名前空間のコピーを持つ。 このフラグを指定すると、\n"
9134 "B<CLONE_FS> も暗黙のうちに指定される。B<CLONE_NEWUTS> を使用するには\n"
9135 "B<CAP_SYS_ADMIN> ケーパビリティが必要である。"
9136
9137 #. type: TP
9138 #: build/C/man2/unshare.2:232
9139 #, no-wrap
9140 msgid "B<CLONE_SYSVSEM> (since Linux 2.6.26)"
9141 msgstr "B<CLONE_SYSVSEM> (Linux 2.6.26 以降)"
9142
9143 #.  commit 9edff4ab1f8d82675277a04e359d0ed8bf14a7b7
9144 #.  CLONE_NEWNS If CLONE_SIGHAND is set and signals are also being shared
9145 #.  (i.e., current->signal->count > 1), force CLONE_THREAD.
9146 #. type: Plain text
9147 #: build/C/man2/unshare.2:252
9148 msgid ""
9149 "This flag reverses the effect of the B<clone>(2)  B<CLONE_SYSVSEM> flag.  "
9150 "Unshare System\\ V semaphore adjustment (I<semadj>)  values, so that the "
9151 "calling process has a new empty I<semadj> list that is not shared with any "
9152 "other process.  If this is the last process that has a reference to the "
9153 "process's current I<semadj> list, then the adjustments in that list are "
9154 "applied to the corresponding semaphores, as described in B<semop>(2)."
9155 msgstr ""
9156 "このフラグは B<clone>(2) B<CLONE_SYSVSEM> フラグの効果を逆転させる。 System"
9157 "\\ V セマフォの調整値 (I<semadj>) を共有せず、 呼び出し元プロセスは他のプロセ"
9158 "スとは共有されない新しい空の I<semadj> リストを持つ。 そのプロセスが、自分の"
9159 "現在の I<semadj> リストへの参照を持つ最後のプロセスであれば、 このリストの調"
9160 "整値は対応するセマフォに適用される (B<semop>(2) に説明がある通り)。"
9161
9162 #
9163 #.  As at 3.9, the following forced implications also apply,
9164 #.  although the relevant flags are not yet implemented.
9165 #.  If CLONE_THREAD is set force CLONE_VM.
9166 #.  If CLONE_VM is set, force CLONE_SIGHAND.
9167 #.  See kernel/fork.c::check_unshare_flags()
9168 #. type: Plain text
9169 #: build/C/man2/unshare.2:279
9170 msgid ""
9171 "In addition, B<CLONE_THREAD>, B<CLONE_SIGHAND>, and B<CLONE_VM> can be "
9172 "specified in I<flags> if the caller is single threaded (i.e., it is not "
9173 "sharing its address space with another process or thread).  In this case, "
9174 "these flags have no effect.  (Note also that specifying B<CLONE_THREAD> "
9175 "automatically implies B<CLONE_VM>, and specifying B<CLONE_VM> automatically "
9176 "implies B<CLONE_SIGHAND>.)  If the process is multithreaded, then the use of "
9177 "these flags results in an error."
9178 msgstr ""
9179 "上記に加えて、 呼び出し元がシングルスレッドの場合 (すなわち別のプロセスやス"
9180 "レッドとアドレス空間を共有していない場合)、 B<CLONE_THREAD>, "
9181 "B<CLONE_SIGHAND>, B<CLONE_VM> を指定することができる。 この場合、 これらのフ"
9182 "ラグは効果を持たない。 (B<CLONE_THREAD> を指定すると自動的に B<CLONE_VM> が指"
9183 "定されたとみなされ、 B<CLONE_VM> を指定すると自動的に B<CLONE_SIGHAND> が指定"
9184 "されたとみなされる点に注意してほしい。) プロセスがマルチスレッドの場合、 これ"
9185 "らのフラグを使用するとエラーとなる。"
9186
9187 #. type: Plain text
9188 #: build/C/man2/unshare.2:286
9189 msgid ""
9190 "If I<flags> is specified as zero, then B<unshare>()  is a no-op; no changes "
9191 "are made to the calling process's execution context."
9192 msgstr ""
9193 "I<flags> に 0 が指定された場合、 B<unshare>()  は何も行わないので、 呼び出し"
9194 "元プロセスの実行コンテキストは、何も変更されない。"
9195
9196 #. type: Plain text
9197 #: build/C/man2/unshare.2:291
9198 msgid ""
9199 "On success, zero returned.  On failure, -1 is returned and I<errno> is set "
9200 "to indicate the error."
9201 msgstr ""
9202 "成功した場合は 0 が返される。 失敗した場合は -1 が返されて、 I<errno> にはエ"
9203 "ラーを示す値が設定される。"
9204
9205 #. type: Plain text
9206 #: build/C/man2/unshare.2:296
9207 msgid "An invalid bit was specified in I<flags>."
9208 msgstr "I<flags> に不正なビットが指定された。"
9209
9210 #. type: Plain text
9211 #: build/C/man2/unshare.2:305
9212 msgid ""
9213 "B<CLONE_THREAD>, B<CLONE_SIGHAND>, or B<CLONE_VM> was specified in I<flags>, "
9214 "and the caller is multithreaded."
9215 msgstr ""
9216 "B<CLONE_THREAD>, B<CLONE_SIGHAND>, B<CLONE_VM> が I<flags> に指定されたが、 "
9217 "呼び出したプロセスはマルチスレッドである。"
9218
9219 #. type: Plain text
9220 #: build/C/man2/unshare.2:315
9221 msgid ""
9222 "B<CLONE_NEWIPC> was specified in I<flags>, but the kernel was not configured "
9223 "with the B<CONFIG_SYSVIPC> and B<CONFIG_IPC_NS> options."
9224 msgstr ""
9225 "I<flags> に B<CLONE_NEWIPC> が指定されたが、カーネルでオプション "
9226 "B<CONFIG_SYSVIPC> と B<CONFIG_IPC_NS> が有効になっていなかった。"
9227
9228 #. type: Plain text
9229 #: build/C/man2/unshare.2:323
9230 msgid ""
9231 "B<CLONE_NEWNET> was specified in I<flags>, but the kernel was not configured "
9232 "with the B<CONFIG_NET_NS> option."
9233 msgstr ""
9234 "I<flags> に B<CLONE_NEWNET> が指定されたが、カーネルでオプション "
9235 "B<CONFIG_NET_NS> が有効になっていなかった。"
9236
9237 #. type: Plain text
9238 #: build/C/man2/unshare.2:331
9239 msgid ""
9240 "B<CLONE_NEWPID> was specified in I<flags>, but the kernel was not configured "
9241 "with the B<CONFIG_PID_NS> option."
9242 msgstr ""
9243 "I<flags> に B<CLONE_NEWPID> が指定されたが、カーネルでオプション "
9244 "B<CONFIG_PID_NS> が有効になっていなかった。"
9245
9246 #. type: Plain text
9247 #: build/C/man2/unshare.2:339
9248 msgid ""
9249 "B<CLONE_NEWUSER> was specified in I<flags>, but the kernel was not "
9250 "configured with the B<CONFIG_USER_NS> option."
9251 msgstr "I<flags> に B<CLONE_NEWUSER> が指定されたが、カーネルでオプション B<CONFIG_USER_NS> が有効になっていなかった。"
9252
9253 #. type: Plain text
9254 #: build/C/man2/unshare.2:347
9255 msgid ""
9256 "B<CLONE_NEWUTS> was specified in I<flags>, but the kernel was not configured "
9257 "with the B<CONFIG_UTS_NS> option."
9258 msgstr "I<flags> に B<CLONE_NEWUTS> が指定されたが、カーネルでオプション B<CONFIG_UTS_NS> が有効になっていなかった。"
9259
9260 #. type: Plain text
9261 #: build/C/man2/unshare.2:357
9262 #, fuzzy
9263 #| msgid ""
9264 #| "B<CLONE_NEWPID> was specified in I<flags>, but the kernel was not "
9265 #| "configured with the B<CONFIG_PID_NS> option."
9266 msgid ""
9267 "B<CLONE_NEWPID> was specified in I<flags>, but the process has previously "
9268 "called B<unshare>()  with the B<CLONE_NEWPID> flag."
9269 msgstr ""
9270 "I<flags> に B<CLONE_NEWPID> が指定されたが、カーネルでオプション "
9271 "B<CONFIG_PID_NS> が有効になっていなかった。"
9272
9273 #. type: Plain text
9274 #: build/C/man2/unshare.2:361
9275 msgid ""
9276 "Cannot allocate sufficient memory to copy parts of caller's context that "
9277 "need to be unshared."
9278 msgstr ""
9279 "呼び出し元のコンテキストのうち共有を解除する必要がある部分をコピーするため"
9280 "に、 十分なメモリーが確保できなかった。"
9281
9282 #.  commit f2302505775fd13ba93f034206f1e2a587017929
9283 #. type: Plain text
9284 #: build/C/man2/unshare.2:369
9285 #, fuzzy
9286 #| msgid ""
9287 #| "B<CLONE_NEWUSER> was specified in I<flags>, and the call would cause the "
9288 #| "limit on the number of nested user namespaces to be exceeded.  See "
9289 #| "B<user_namespaces>(7)."
9290 msgid ""
9291 "B<CLONE_NEWPID> was specified in flags, but the limit on the nesting depth "
9292 "of PID namespaces would have been exceeded; see B<pid_namespaces>(7)."
9293 msgstr ""
9294 "B<CLONE_NEWUSER> が I<flags> に指定されており、 この呼び出しによりネストされ"
9295 "たユーザー名前空間数の上限を超えてしまう。 B<user_namespaces>(7) を参照。"
9296
9297 #. type: Plain text
9298 #: build/C/man2/unshare.2:378
9299 msgid ""
9300 "B<CLONE_NEWUSER> was specified in I<flags>, and the call would cause the "
9301 "limit on the number of nested user namespaces to be exceeded.  See "
9302 "B<user_namespaces>(7)."
9303 msgstr ""
9304 "B<CLONE_NEWUSER> が I<flags> に指定されており、 この呼び出しによりネストされ"
9305 "たユーザー名前空間数の上限を超えてしまう。 B<user_namespaces>(7) を参照。"
9306
9307 #. type: Plain text
9308 #: build/C/man2/unshare.2:391
9309 msgid ""
9310 "One of the values in I<flags> specified the creation of a new user "
9311 "namespace, but doing so would have caused the limit defined by the "
9312 "corresponding file in I</proc/sys/user> to be exceeded.  For further "
9313 "details, see B<namespaces>(7)."
9314 msgstr ""
9315
9316 #. type: Plain text
9317 #: build/C/man2/unshare.2:394
9318 msgid ""
9319 "The calling process did not have the required privileges for this operation."
9320 msgstr "呼び出し元プロセスはこの操作を行うのに必要な特権を持っていなかった。"
9321
9322 #. type: Plain text
9323 #: build/C/man2/unshare.2:402
9324 msgid ""
9325 "B<CLONE_NEWUSER> was specified in I<flags>, but either the effective user ID "
9326 "or the effective group ID of the caller does not have a mapping in the "
9327 "parent namespace (see B<user_namespaces>(7))."
9328 msgstr ""
9329 "B<CLONE_NEWUSER> が I<flags> に指定されたが、 呼び出し元の実効ユーザー ID も"
9330 "しくは実効グループ ID が親名前空間にマッピングがない (B<user_namespaces>(7) "
9331 "参照)。"
9332
9333 #.  commit 3151527ee007b73a0ebd296010f1c0454a919c7d
9334 #.  FIXME What is the rationale for this restriction?
9335 #. type: Plain text
9336 #: build/C/man2/unshare.2:412
9337 msgid ""
9338 "B<CLONE_NEWUSER> was specified in I<flags> and the caller is in a chroot "
9339 "environment (i.e., the caller's root directory does not match the root "
9340 "directory of the mount namespace in which it resides)."
9341 msgstr ""
9342 "B<CLONE_NEWUSER> が I<flags> に指定され、 呼び出し元が chroot された環境にい"
9343 "る (すなわち、呼び出し元の root ディレクトリが呼び出し元が属するマウント名前"
9344 "空間の root ディレクトリに一致しない)。"
9345
9346 #. type: TP
9347 #: build/C/man2/unshare.2:412
9348 #, no-wrap
9349 msgid "B<EUSERS> (from Linux 3.11 to Linux 4.8)"
9350 msgstr " B<EUSERS> (from Linux 3.11 to Linux 4.8)"
9351
9352 #. type: Plain text
9353 #: build/C/man2/unshare.2:421
9354 #, fuzzy
9355 #| msgid ""
9356 #| "B<CLONE_NEWUSER> was specified in I<flags>, and the call would cause the "
9357 #| "limit on the number of nested user namespaces to be exceeded.  See "
9358 #| "B<user_namespaces>(7)."
9359 msgid ""
9360 "B<CLONE_NEWUSER> was specified in I<flags>, and the limit on the number of "
9361 "nested user namespaces would be exceeded.  See the discussion of the "
9362 "B<ENOSPC> error above."
9363 msgstr ""
9364 "B<CLONE_NEWUSER> が I<flags> に指定されており、 この呼び出しによりネストされ"
9365 "たユーザー名前空間数の上限を超えてしまう。 B<user_namespaces>(7) を参照。"
9366
9367 #. type: Plain text
9368 #: build/C/man2/unshare.2:425
9369 msgid "The B<unshare>()  system call was added to Linux in kernel 2.6.16."
9370 msgstr "B<unshare>()  システムコールは Linux カーネル 2.6.16 で追加された。"
9371
9372 #. type: Plain text
9373 #: build/C/man2/unshare.2:429
9374 msgid "The B<unshare>()  system call is Linux-specific."
9375 msgstr "B<unshare>()  システムコールは Linux 固有である。"
9376
9377 #.  FIXME all of the following needs to be reviewed for the current kernel
9378 #.  However, we can do unshare(CLONE_SIGHAND) if CLONE_SIGHAND
9379 #.  was not specified when doing clone(); i.e., unsharing
9380 #.  signal handlers is permitted if we are not actually
9381 #.  sharing signal handlers.   mtk
9382 #.  However, we can do unshare(CLONE_VM) if CLONE_VM
9383 #.  was not specified when doing clone(); i.e., unsharing
9384 #.  virtual memory is permitted if we are not actually
9385 #.  sharing virtual memory.   mtk
9386 #. 9) Future Work
9387 #. --------------
9388 #. The current implementation of unshare does not allow unsharing of
9389 #. signals and signal handlers. Signals are complex to begin with and
9390 #. to unshare signals and/or signal handlers of a currently running
9391 #. process is even more complex. If in the future there is a specific
9392 #. need to allow unsharing of signals and/or signal handlers, it can
9393 #. be incrementally added to unshare without affecting legacy
9394 #. applications using unshare.
9395 #. type: Plain text
9396 #: build/C/man2/unshare.2:463
9397 msgid ""
9398 "Not all of the process attributes that can be shared when a new process is "
9399 "created using B<clone>(2)  can be unshared using B<unshare>().  In "
9400 "particular, as at kernel 3.8, B<unshare>()  does not implement flags that "
9401 "reverse the effects of B<CLONE_SIGHAND>, B<CLONE_THREAD>, or B<CLONE_VM>.  "
9402 "Such functionality may be added in the future, if required."
9403 msgstr ""
9404 "B<clone>(2)  で新しいプロセスを生成したときに共有される全てのプロセス属性"
9405 "を、 B<unshare>()  によって共有の解除ができるわけではない。 特に、カーネル "
9406 "3.8 時点では、 B<unshare>()  に B<CLONE_SIGHAND>, B<CLONE_THREAD>, "
9407 "B<CLONE_VM> の効果を取り消すためのフラグが実装されていない。 これらの機能は、"
9408 "必要であれば将来追加されるかもしれない。"
9409
9410 #. type: Plain text
9411 #: build/C/man2/unshare.2:472
9412 msgid ""
9413 "The program below provides a simple implementation of the B<unshare>(1)  "
9414 "command, which unshares one or more namespaces and executes the command "
9415 "supplied in its command-line arguments.  Here's an example of the use of "
9416 "this program, running a shell in a new mount namespace, and verifying that "
9417 "the original shell and the new shell are in separate mount namespaces:"
9418 msgstr ""
9419 "以下のプログラムは B<unshare>(1) コマンドの簡単な実装である。 このコマンド"
9420 "は、1 つ以上の名前空間の unshare を行ってから、 コマンドライン引き数で指定さ"
9421 "れたコマンドを実行する。 以下はこのプログラムの使用例である。 新しいマウント"
9422 "名前空間でシェルを実行し、 元のシェルと新しいシェルが別のマウント名前空間にい"
9423 "ることを確認している。"
9424
9425 #. type: Plain text
9426 #: build/C/man2/unshare.2:480
9427 #, no-wrap
9428 msgid ""
9429 "$ B<readlink /proc/$$/ns/mnt>\n"
9430 "mnt:[4026531840]\n"
9431 "$ B<sudo ./unshare -m /bin/bash>\n"
9432 "# B<readlink /proc/$$/ns/mnt>\n"
9433 "mnt:[4026532325]\n"
9434 msgstr ""
9435 "$ B<readlink /proc/$$/ns/mnt>\n"
9436 "mnt:[4026531840]\n"
9437 "$ B<sudo ./unshare -m /bin/bash>\n"
9438 "# B<readlink /proc/$$/ns/mnt>\n"
9439 "mnt:[4026532325]\n"
9440
9441 #. type: Plain text
9442 #: build/C/man2/unshare.2:486
9443 msgid ""
9444 "The differing output of the two B<readlink>(1)  commands shows that the two "
9445 "shells are in different mount namespaces."
9446 msgstr ""
9447 "2 つの B<readlink>(1) コマンドの出力が違うことから、 2 つのシェルは異なるマウ"
9448 "ント名前空間にいることが分かる。"
9449
9450 #. type: Plain text
9451 #: build/C/man2/unshare.2:490
9452 #, no-wrap
9453 msgid "/* unshare.c\n"
9454 msgstr "/* unshare.c\n"
9455
9456 #. type: Plain text
9457 #: build/C/man2/unshare.2:499
9458 #, no-wrap
9459 msgid ""
9460 "   A simple implementation of the unshare(1) command: unshare\n"
9461 "   namespaces and execute a command.\n"
9462 "*/\n"
9463 "#define _GNU_SOURCE\n"
9464 "#include E<lt>sched.hE<gt>\n"
9465 "#include E<lt>unistd.hE<gt>\n"
9466 "#include E<lt>stdlib.hE<gt>\n"
9467 "#include E<lt>stdio.hE<gt>\n"
9468 msgstr ""
9469 "   A simple implementation of the unshare(1) command: unshare\n"
9470 "   namespaces and execute a command.\n"
9471 "*/\n"
9472 "#define _GNU_SOURCE\n"
9473 "#include E<lt>sched.hE<gt>\n"
9474 "#include E<lt>unistd.hE<gt>\n"
9475 "#include E<lt>stdlib.hE<gt>\n"
9476 "#include E<lt>stdio.hE<gt>\n"
9477
9478 #. type: Plain text
9479 #: build/C/man2/unshare.2:502
9480 #, no-wrap
9481 msgid ""
9482 "/* A simple error-handling function: print an error message based\n"
9483 "   on the value in \\(aqerrno\\(aq and terminate the calling process */\n"
9484 msgstr ""
9485 "/* A simple error-handling function: print an error message based\n"
9486 "   on the value in \\(aqerrno\\(aq and terminate the calling process */\n"
9487
9488 #. type: Plain text
9489 #: build/C/man2/unshare.2:521
9490 #, no-wrap
9491 msgid ""
9492 "static void\n"
9493 "usage(char *pname)\n"
9494 "{\n"
9495 "    fprintf(stderr, \"Usage: %s [options] program [arg...]\\en\", pname);\n"
9496 "    fprintf(stderr, \"Options can be:\\en\");\n"
9497 "    fprintf(stderr, \"    -C   unshare cgroup namespace\\en\");\n"
9498 "    fprintf(stderr, \"    -i   unshare IPC namespace\\en\");\n"
9499 "    fprintf(stderr, \"    -m   unshare mount namespace\\en\");\n"
9500 "    fprintf(stderr, \"    -n   unshare network namespace\\en\");\n"
9501 "    fprintf(stderr, \"    -p   unshare PID namespace\\en\");\n"
9502 "    fprintf(stderr, \"    -t   unshare time namespace\\en\");\n"
9503 "    fprintf(stderr, \"    -u   unshare UTS namespace\\en\");\n"
9504 "    fprintf(stderr, \"    -U   unshare user namespace\\en\");\n"
9505 "    exit(EXIT_FAILURE);\n"
9506 "}\n"
9507 msgstr ""
9508 "static void\n"
9509 "usage(char *pname)\n"
9510 "{\n"
9511 "    fprintf(stderr, \"Usage: %s [options] program [arg...]\\en\", pname);\n"
9512 "    fprintf(stderr, \"Options can be:\\en\");\n"
9513 "    fprintf(stderr, \"    -C   unshare cgroup namespace\\en\");\n"
9514 "    fprintf(stderr, \"    -i   unshare IPC namespace\\en\");\n"
9515 "    fprintf(stderr, \"    -m   unshare mount namespace\\en\");\n"
9516 "    fprintf(stderr, \"    -n   unshare network namespace\\en\");\n"
9517 "    fprintf(stderr, \"    -p   unshare PID namespace\\en\");\n"
9518 "    fprintf(stderr, \"    -t   unshare time namespace\\en\");\n"
9519 "    fprintf(stderr, \"    -u   unshare UTS namespace\\en\");\n"
9520 "    fprintf(stderr, \"    -U   unshare user namespace\\en\");\n"
9521 "    exit(EXIT_FAILURE);\n"
9522 "}\n"
9523
9524 #. type: Plain text
9525 #: build/C/man2/unshare.2:526
9526 #, no-wrap
9527 msgid ""
9528 "int\n"
9529 "main(int argc, char *argv[])\n"
9530 "{\n"
9531 "    int flags, opt;\n"
9532 msgstr ""
9533 "int\n"
9534 "main(int argc, char *argv[])\n"
9535 "{\n"
9536 "    int flags, opt;\n"
9537
9538 #. type: Plain text
9539 #: build/C/man2/unshare.2:528
9540 #, no-wrap
9541 msgid "    flags = 0;\n"
9542 msgstr "    flags = 0;\n"
9543
9544 #. type: Plain text
9545 #: build/C/man2/unshare.2:542
9546 #, no-wrap
9547 msgid ""
9548 "    while ((opt = getopt(argc, argv, \"CimnptuU\")) != -1) {\n"
9549 "        switch (opt) {\n"
9550 "        case \\(aqC\\(aq: flags |= CLONE_NEWCGROUP;      break;\n"
9551 "        case \\(aqi\\(aq: flags |= CLONE_NEWIPC;        break;\n"
9552 "        case \\(aqm\\(aq: flags |= CLONE_NEWNS;         break;\n"
9553 "        case \\(aqn\\(aq: flags |= CLONE_NEWNET;        break;\n"
9554 "        case \\(aqp\\(aq: flags |= CLONE_NEWPID;        break;\n"
9555 "        case \\(aqt\\(aq: flags |= CLONE_NEWTIME;        break;\n"
9556 "        case \\(aqu\\(aq: flags |= CLONE_NEWUTS;        break;\n"
9557 "        case \\(aqU\\(aq: flags |= CLONE_NEWUSER;       break;\n"
9558 "        default:  usage(argv[0]);\n"
9559 "        }\n"
9560 "    }\n"
9561 msgstr ""
9562 "    while ((opt = getopt(argc, argv, \"CimnptuU\")) != -1) {\n"
9563 "        switch (opt) {\n"
9564 "        case \\(aqC\\(aq: flags |= CLONE_NEWCGROUP;      break;\n"
9565 "        case \\(aqi\\(aq: flags |= CLONE_NEWIPC;        break;\n"
9566 "        case \\(aqm\\(aq: flags |= CLONE_NEWNS;         break;\n"
9567 "        case \\(aqn\\(aq: flags |= CLONE_NEWNET;        break;\n"
9568 "        case \\(aqp\\(aq: flags |= CLONE_NEWPID;        break;\n"
9569 "        case \\(aqt\\(aq: flags |= CLONE_NEWTIME;        break;\n"
9570 "        case \\(aqu\\(aq: flags |= CLONE_NEWUTS;        break;\n"
9571 "        case \\(aqU\\(aq: flags |= CLONE_NEWUSER;       break;\n"
9572 "        default:  usage(argv[0]);\n"
9573 "        }\n"
9574 "    }\n"
9575
9576 #. type: Plain text
9577 #: build/C/man2/unshare.2:545
9578 #, no-wrap
9579 msgid ""
9580 "    if (optind E<gt>= argc)\n"
9581 "        usage(argv[0]);\n"
9582 msgstr ""
9583 "    if (optind E<gt>= argc)\n"
9584 "        usage(argv[0]);\n"
9585
9586 #. type: Plain text
9587 #: build/C/man2/unshare.2:548
9588 #, no-wrap
9589 msgid ""
9590 "    if (unshare(flags) == -1)\n"
9591 "        errExit(\"unshare\");\n"
9592 msgstr ""
9593 "    if (unshare(flags) == -1)\n"
9594 "        errExit(\"unshare\");\n"
9595
9596 #. type: Plain text
9597 #: build/C/man2/unshare.2:552
9598 #, no-wrap
9599 msgid ""
9600 "    execvp(argv[optind], &argv[optind]);\n"
9601 "    errExit(\"execvp\");\n"
9602 "}\n"
9603 msgstr ""
9604 "    execvp(argv[optind], &argv[optind]);\n"
9605 "    errExit(\"execvp\");\n"
9606 "}\n"
9607
9608 #. type: Plain text
9609 #: build/C/man2/unshare.2:561
9610 msgid ""
9611 "B<unshare>(1), B<clone>(2), B<fork>(2), B<kcmp>(2), B<setns>(2), "
9612 "B<vfork>(2), B<namespaces>(7)"
9613 msgstr ""
9614 "B<unshare>(1), B<clone>(2), B<fork>(2), B<kcmp>(2), B<setns>(2), "
9615 "B<vfork>(2), B<namespaces>(7)"
9616
9617 #.  commit f504d47be5e8fa7ecf2bf660b18b42e6960c0eb2
9618 #. type: Plain text
9619 #: build/C/man2/unshare.2:568
9620 msgid ""
9621 "I<Documentation/userspace-api/unshare.rst> in the Linux kernel source tree "
9622 "(or I<Documentation/unshare.txt> before Linux 4.12)"
9623 msgstr "Linux カーネルソース内の I<Documentation/userspace-api/unshare.rst> (Linux 4.12 より前では I<Documentation/unshare.txt>)"
9624
9625 #~ msgid ""
9626 #~ "Unlike B<fork>(2), B<clone>()  allows the child process to share parts of "
9627 #~ "its execution context with the calling process, such as the memory space, "
9628 #~ "the table of file descriptors, and the table of signal handlers.  (Note "
9629 #~ "that on this manual page, \"calling process\" normally corresponds to "
9630 #~ "\"parent process\".  But see the description of B<CLONE_PARENT> below.)"
9631 #~ msgstr ""
9632 #~ "B<fork>(2) とは異なり、B<clone>() では、子プロセス (child process)  と呼び"
9633 #~ "出し元のプロセスとが、メモリー空間、ファイルディスクリプターのテーブル、シ"
9634 #~ "グナルハンドラーのテーブルなどの 実行コンテキストの一部を共有できる。 (こ"
9635 #~ "のマニュアルにおける「呼び出し元のプロセス」は、通常は 「親プロセス」と一"
9636 #~ "致する。但し、後述の B<CLONE_PARENT> の項も参照のこと)"
9637
9638 #~ msgid ""
9639 #~ "I<flags> may also be bitwise-or'ed with zero or more of the following "
9640 #~ "constants, in order to specify what is shared between the calling process "
9641 #~ "and the child process:"
9642 #~ msgstr ""
9643 #~ "I<flags> には、以下の定数のうち 0個以上をビット毎の論理和 (bitwise-or)  を"
9644 #~ "とったものを指定できる。これらの定数は呼び出し元のプロセスと 子プロセスの"
9645 #~ "間で何を共有するかを指定する:"
9646
9647 #~ msgid "Store child thread ID at location I<ctid> in child memory."
9648 #~ msgstr ""
9649 #~ "子プロセスのメモリー内の I<ctid> が指す場所に子プロセスのスレッド ID を格"
9650 #~ "納する。"
9651
9652 #~ msgid ""
9653 #~ "If B<CLONE_NEWIPC> is set, then create the process in a new IPC "
9654 #~ "namespace.  If this flag is not set, then (as with B<fork>(2)), the "
9655 #~ "process is created in the same IPC namespace as the calling process.  "
9656 #~ "This flag is intended for the implementation of containers."
9657 #~ msgstr ""
9658 #~ "B<CLONE_NEWIPC> が設定された場合、新しい IPC 名前空間 (namespace) でプロセ"
9659 #~ "スを作成する。 このフラグが設定されていない場合、 (B<fork>(2)  の場合と同"
9660 #~ "様) 呼び出し元のプロセスと同じ IPC 名前空間でプロセスが 作成される。 この"
9661 #~ "フラグは、コンテナの実装での使用を意図して用意されたものである。"
9662
9663 #~ msgid ""
9664 #~ "An IPC namespace provides an isolated view of System\\ V IPC objects (see "
9665 #~ "B<svipc>(7))  and (since Linux 2.6.30)  POSIX message queues (see "
9666 #~ "B<mq_overview>(7)).  The common characteristic of these IPC mechanisms is "
9667 #~ "that IPC objects are identified by mechanisms other than filesystem "
9668 #~ "pathnames."
9669 #~ msgstr ""
9670 #~ "IPC 名前空間は、独立の System\\ V IPC オブジェクト空間 (B<svipc>(7) 参照) "
9671 #~ "を提供する 。 (Linux 2.6.30 以降では) 独立した POSIX メッセージキュー空間 "
9672 #~ "(B<mq_overview>(7) 参照) も提供される。 これらの IPC 機構に共通の特徴とし"
9673 #~ "て、 IPC オブジェクトはファイルシステムのパス名とは違った仕組みで識別され"
9674 #~ "るという点がある。"
9675
9676 #~ msgid ""
9677 #~ "Objects created in an IPC namespace are visible to all other processes "
9678 #~ "that are members of that namespace, but are not visible to processes in "
9679 #~ "other IPC namespaces."
9680 #~ msgstr ""
9681 #~ "ある IPC 名前空間に作成されたオブジェクトは、 その名前空間のメンバーである"
9682 #~ "他のすべてのプロセスからも見えるが、 違う IPC 名前空間のプロセスからは見え"
9683 #~ "ない。"
9684
9685 #~ msgid ""
9686 #~ "When an IPC namespace is destroyed (i.e., when the last process that is a "
9687 #~ "member of the namespace terminates), all IPC objects in the namespace are "
9688 #~ "automatically destroyed."
9689 #~ msgstr ""
9690 #~ "IPC 名前空間が破棄される時 (すなわち、その名前空間のメンバーの最後のプロセ"
9691 #~ "スが終了する時)、 その名前空間の全ての IPC オブジェクトは自動的に破棄され"
9692 #~ "る。"
9693
9694 #~ msgid ""
9695 #~ "If B<CLONE_NEWNET> is set, then create the process in a new network "
9696 #~ "namespace.  If this flag is not set, then (as with B<fork>(2))  the "
9697 #~ "process is created in the same network namespace as the calling process.  "
9698 #~ "This flag is intended for the implementation of containers."
9699 #~ msgstr ""
9700 #~ "B<CLONE_NEWNET> が設定された場合、新しいネットワーク名前空間 (network "
9701 #~ "namaspace)  でプロセスを作成する。 このフラグが設定されていない場合、 "
9702 #~ "(B<fork>(2)  の場合と同様) 呼び出し元のプロセスと同じネットワーク名前空間"
9703 #~ "でプロセスが 作成される。 このフラグは、コンテナの実装での使用を意図して用"
9704 #~ "意されたものである。"
9705
9706 #~ msgid ""
9707 #~ "A network namespace provides an isolated view of the networking stack "
9708 #~ "(network device interfaces, IPv4 and IPv6 protocol stacks, IP routing "
9709 #~ "tables, firewall rules, the I</proc/net> and I</sys/class/net> directory "
9710 #~ "trees, sockets, etc.).  A physical network device can live in exactly one "
9711 #~ "network namespace.  A virtual network device (\"veth\") pair provides a "
9712 #~ "pipe-like abstraction that can be used to create tunnels between network "
9713 #~ "namespaces, and can be used to create a bridge to a physical network "
9714 #~ "device in another namespace."
9715 #~ msgstr ""
9716 #~ "ネットワーク名前空間は、分離されたネットワークスタックを提供するものであ"
9717 #~ "る (ネットワークスタックとは、 ネットワークデバイスインターフェース、IPv4 "
9718 #~ "や IPv6 プロトコルスタック、 I</proc/net>、 I</sys/class/net> ディレクトリ"
9719 #~ "ツリー、ソケットなどである)。 物理ネットワークデバイスが所属できるネット"
9720 #~ "ワーク名前空間は一つだけである。 仮想ネットワークデバイス (\"veth\") のペ"
9721 #~ "アにより パイプ風の抽象化 (abstraction) が実現されており、 これを使うこと"
9722 #~ "で、ネットワーク名前空間間のトンネルを作成したり、 別の名前空間の物理ネッ"
9723 #~ "トワークデバイスへのブリッジを作成したり することができる。"
9724
9725 #~ msgid ""
9726 #~ "When a network namespace is freed (i.e., when the last process in the "
9727 #~ "namespace terminates), its physical network devices are moved back to the "
9728 #~ "initial network namespace (not to the parent of the process).  For "
9729 #~ "further information on network namespaces, see B<namespaces>(7)."
9730 #~ msgstr ""
9731 #~ "ネットワーク名前空間が解放される時 (すなわち、その名前空間の最後のプロセス"
9732 #~ "が終了する時)、 物理ネットワークデバイスは初期ネットワーク名前空間 "
9733 #~ "(initial network namespace) に戻される (親プロセスのネットワーク名前空間に"
9734 #~ "戻される訳ではない)。 ネットワーク名前空間のさらなる情報は "
9735 #~ "B<namespaces>(7) を参照。"
9736
9737 #~ msgid ""
9738 #~ "If B<CLONE_NEWPID> is set, then create the process in a new PID "
9739 #~ "namespace.  If this flag is not set, then (as with B<fork>(2))  the "
9740 #~ "process is created in the same PID namespace as the calling process.  "
9741 #~ "This flag is intended for the implementation of containers."
9742 #~ msgstr ""
9743 #~ "B<CLONE_NEWPID> が設定された場合、新しい PID 名前空間でプロセスを作成す"
9744 #~ "る。 このフラグが設定されていない場合、 (B<fork>(2)  の場合と同様) 呼び出"
9745 #~ "し元のプロセスと同じ PID 名前空間で プロセスが作成される。 このフラグは、"
9746 #~ "コンテナの実装での使用を意図して用意されたものである。"
9747
9748 #~ msgid ""
9749 #~ "A UTS namespace is the set of identifiers returned by B<uname>(2); among "
9750 #~ "these, the domain name and the hostname can be modified by "
9751 #~ "B<setdomainname>(2)  and B<sethostname>(2), respectively.  Changes made "
9752 #~ "to the identifiers in a UTS namespace are visible to all other processes "
9753 #~ "in the same namespace, but are not visible to processes in other UTS "
9754 #~ "namespaces."
9755 #~ msgstr ""
9756 #~ "UTS 名前空間は、 B<uname>(2)  が返す識別子の集合である。 識別子としてはド"
9757 #~ "メイン名とホスト名があり、 それぞれ B<setdomainname>(2), "
9758 #~ "B<sethostname>(2)  で修正することができる。 ある UTS 名前空間における識別"
9759 #~ "子の変更は同じ名前空間の他のすべての プロセスに見えるが、別の UTS 名前空間"
9760 #~ "のプロセスには見えない。"
9761
9762 #~ msgid ""
9763 #~ "This flag was I<deprecated> from Linux 2.6.25 onward, and was I<removed> "
9764 #~ "altogether in Linux 2.6.38."
9765 #~ msgstr ""
9766 #~ "このフラグは Linux 2.6.25 以降ではI<非推奨>であり、\n"
9767 #~ "Linux 2.6.38 で完全にI<削除>された。"
9768
9769 #~ msgid ""
9770 #~ "Signals may be sent to a thread group as a whole (i.e., a TGID) using "
9771 #~ "B<kill>(2), or to a specific thread (i.e., TID) using B<tgkill>(2)."
9772 #~ msgstr ""
9773 #~ "B<kill>(2)  を使ってスレッドグループ全体 (つまり TGID) にシグナルを送るこ"
9774 #~ "ともできれば、 B<tgkill>(2)  を使って特定のスレッド (つまり TID) にシグナ"
9775 #~ "ルを送ることもできる。"
9776
9777 #~ msgid ""
9778 #~ "Each thread has its own signal mask, as set by B<sigprocmask>(2), but "
9779 #~ "signals can be pending either: for the whole process (i.e., deliverable "
9780 #~ "to any member of the thread group), when sent with B<kill>(2); or for an "
9781 #~ "individual thread, when sent with B<tgkill>(2).  A call to "
9782 #~ "B<sigpending>(2)  returns a signal set that is the union of the signals "
9783 #~ "pending for the whole process and the signals that are pending for the "
9784 #~ "calling thread."
9785 #~ msgstr ""
9786 #~ "各々のスレッドは独自のシグナルマスクを持っており、 B<sigprocmask>(2)  で設"
9787 #~ "定できる。 だが、処理待ちのシグナルには、 B<kill>(2)  で送信されるプロセス"
9788 #~ "全体に対するもの (つまり、スレッドグループの どのメンバーにも配送できるも"
9789 #~ "の) と、 B<tgkill>(2)  で送信される個々のスレッドに対するものがありえる。 "
9790 #~ "B<sigpending>(2)  を呼び出すと、プロセス全体に対する処理待ちシグナルと呼び"
9791 #~ "出し元の スレッドに対する処理待ちシグナルを結合したシグナル集合が返され"
9792 #~ "る。"
9793
9794 #~ msgid ""
9795 #~ "For some architectures, the order of the arguments for the system call "
9796 #~ "differs from that shown above.  On the score, microblaze, ARM, ARM 64, PA-"
9797 #~ "RISC, arc, Power PC, xtensa, and MIPS architectures, the order of the "
9798 #~ "fourth and fifth arguments is reversed.  On the cris and s390 "
9799 #~ "architectures, the order of the first and second arguments is reversed."
9800 #~ msgstr ""
9801 #~ "いくつかのアーキテクチャーでは、システムコールの引き数の順序は上記とは異"
9802 #~ "なっている。 microblaze, ARM, ARM 64, PA-RISC, arc, Power PC, xtensa, "
9803 #~ "MIPS アーキテクチャーでは、 4 番目と 5 番目の引き数の順番が逆である。 "
9804 #~ "cris と s390 アーキテクチャーでは、最初と 2 番目の引き数の順番が逆である。"
9805
9806 #~ msgid ""
9807 #~ "The prototype shown above is for the glibc wrapper function; the raw "
9808 #~ "system call interface has no I<fn> or I<arg> argument, and changes the "
9809 #~ "order of the arguments so that I<flags> is the first argument, and I<tls> "
9810 #~ "is the last argument."
9811 #~ msgstr ""
9812 #~ "上記のプロトタイプは glibc ラッパー関数用のものである。 素のシステムコール"
9813 #~ "のインターフェースには引き数 I<fn> と I<arg> がない。 また、引き数の順序が"
9814 #~ "変わり、 I<flags> が最初の引き数で、 I<tls> が最後の引き数である。"
9815
9816 #~ msgid ""
9817 #~ "Returned by B<clone>()  when a zero value is specified for I<child_stack>."
9818 #~ msgstr "I<child_stack> にゼロを指定した場合に B<clone>()  が返す。"
9819
9820 #~ msgid ""
9821 #~ "There is no entry for B<clone>()  in libc5.  glibc2 provides B<clone>()  "
9822 #~ "as described in this manual page."
9823 #~ msgstr ""
9824 #~ "libc5 には B<clone>()  はない。glibc2 では B<clone>()  が提供されており、"
9825 #~ "このマニュアルページに記載の通りである。"
9826
9827 #~ msgid ""
9828 #~ "For a while there was B<CLONE_DETACHED> (introduced in 2.5.32): parent "
9829 #~ "wants no child-exit signal.  In 2.6.2 the need to give this together with "
9830 #~ "B<CLONE_THREAD> disappeared.  This flag is still defined, but has no "
9831 #~ "effect."
9832 #~ msgstr ""
9833 #~ "B<CLONE_DETACHED> というフラグが、2.5.32 で導入されて以来しばらくの間存在"
9834 #~ "した。 このフラグは親プロセスが子プロセス終了のシグナルを必要としないこと"
9835 #~ "を 表すものである。 2.6.2 で、 CLONE_DETATCHED を CLONE_THREAD と一緒に指"
9836 #~ "定する必要はなくなった。 このフラグはまだ定義されているが、何の効果もな"
9837 #~ "い。"
9838
9839 #~ msgid ""
9840 #~ "This field contains flags controlling scheduling behavior.  Only one such "
9841 #~ "flag is currently defined: B<SCHED_FLAG_RESET_ON_FORK>.  As a result of "
9842 #~ "including this flag, children created by B<fork>(2)  do not inherit "
9843 #~ "privileged scheduling policies.  See B<sched>(7)  for details."
9844 #~ msgstr ""
9845 #~ "このフィールドはスケジューリング動作の制御を行う。 現在のところ、サポート"
9846 #~ "されているフラグは B<SCHED_FLAG_RESET_ON_FORK> の一つだけである。 このフラ"
9847 #~ "グが指定されると、 B<fork>(2) で作成された子プロセスは特権が必要なスケ"
9848 #~ "ジューリングポリシーを継承しない。 詳細は B<sched>(7) を参照。"
9849
9850 #~ msgid ""
9851 #~ "A call to B<sched_setscheduler>(2), B<sched_setparam>(2), or "
9852 #~ "B<sched_setattr>(2)  will put the B<SCHED_FIFO> (or B<SCHED_RR>) thread "
9853 #~ "identified by I<pid> at the start of the list if it was runnable.  As a "
9854 #~ "consequence, it may preempt the currently running thread if it has the "
9855 #~ "same priority.  (POSIX.1-2001 specifies that the thread should go to the "
9856 #~ "end of the list.)"
9857 #~ msgstr ""
9858 #~ "B<sched_setscheduler>(2), B<sched_setparam>(2), B<sched_setattr>(2) は "
9859 #~ "I<pid> で指定された B<SCHED_FIFO> (または B<SCHED_RR>) スレッドが 実行可能"
9860 #~ "な場合、リストの最初に置く。 結果として、もし優先度が同じだった場合、 現在"
9861 #~ "実行中のスレッドに先んじるかもしれない。 (POSIX.1-2001 ではスレッドはリス"
9862 #~ "トの最後に行くべきと規定されている。)"
9863
9864 #~ msgid ""
9865 #~ "Given a file descriptor referring to a namespace, reassociate the calling "
9866 #~ "thread with that namespace."
9867 #~ msgstr ""
9868 #~ "名前空間を参照するファイルディスクリプターを指定すると、\n"
9869 #~ "呼び出したスレッドにその名前空間を関連付けしなおす。"
9870
9871 #~ msgid ""
9872 #~ "The I<fd> argument is a file descriptor referring to one of the namespace "
9873 #~ "entries in a I</proc/[pid]/ns/> directory; see B<namespaces>(7)  for "
9874 #~ "further information on I</proc/[pid]/ns/>.  The calling thread will be "
9875 #~ "reassociated with the corresponding namespace, subject to any constraints "
9876 #~ "imposed by the I<nstype> argument."
9877 #~ msgstr ""
9878 #~ "I<fd> 引き数は、 I</proc/[pid]/ns/> ディレクトリ内の名前空間エントリー\n"
9879 #~ "のいずれかを参照するファイルディスクリプターである。\n"
9880 #~ "I</proc/[pid]/ns/> の詳細は B<namespaces>(7) を参照。\n"
9881 #~ "I<nstype> 引き数で指定された制限の範囲内で、\n"
9882 #~ "呼び出したスレッドに I<fd> に対応する名前空間を関連付けしなおす。"
9883
9884 #~ msgid ""
9885 #~ "B<CLONE_NEWPID> behaves somewhat differently from the other I<nstype> "
9886 #~ "values: reassociating the calling thread with a PID namespace changes "
9887 #~ "only the PID namespace that child processes of the caller will be created "
9888 #~ "in; it does not change the PID namespace of the caller itself.  "
9889 #~ "Reassociating with a PID namespace is allowed only if the PID namespace "
9890 #~ "specified by I<fd> is a descendant (child, grandchild, etc.)  of the PID "
9891 #~ "namespace of the caller.  For further details on PID namespaces, see "
9892 #~ "B<pid_namespaces>(7)."
9893 #~ msgstr ""
9894 #~ "B<CLONE_NEWPID> は他の I<nstype> 値の場合と少し違った動作をする。 呼び出し"
9895 #~ "元スレッドを PID 名前空間に関連付けし直すと、 呼び出し元の子プロセスが作成"
9896 #~ "される PID 名前空間が変更されるだけである。 呼び出し元自身の PID 名前空間"
9897 #~ "は変更されない。 PID 名前空間を関連付けし直すことができるのは、 I<fd> で指"
9898 #~ "定された PID 名前空間が呼び出し元の PID 名前空間の子孫 (子プロセス、孫プロ"
9899 #~ "セスなど) の場合だけである。 PID 名前空間の詳細は B<pid_namespaces>(7) を"
9900 #~ "参照。"
9901
9902 #~ msgid ""
9903 #~ "A process reassociating itself with a user namespace must have the "
9904 #~ "B<CAP_SYS_ADMIN> capability in the target user namespace.  Upon "
9905 #~ "successfully joining a user namespace, a process is granted all "
9906 #~ "capabilities in that namespace, regardless of its user and group IDs.  A "
9907 #~ "multithreaded process may not change user namespace with B<setns>().  It "
9908 #~ "is not permitted to use B<setns>()  to reenter the caller's current user "
9909 #~ "namespace.  This prevents a caller that has dropped capabilities from "
9910 #~ "regaining those capabilities via a call to B<setns>().  For security "
9911 #~ "reasons, a process can't join a new user namespace if it is sharing "
9912 #~ "filesystem-related attributes (the attributes whose sharing is controlled "
9913 #~ "by the B<clone>(2)  B<CLONE_FS> flag) with another process.  For further "
9914 #~ "details on user namespaces, see B<user_namespaces>(7)."
9915 #~ msgstr ""
9916 #~ "プロセスが自分自身をユーザー名前空間に再関連付けするには、 そのプロセスは"
9917 #~ "変更後のユーザー名前空間において B<CAP_SYS_ADMIN> ケーパビリティを持ってい"
9918 #~ "なければならない。 ユーザー名前空間への参加に成功すると、 そのユーザー ID "
9919 #~ "やグループ ID に関わらず、 プロセスにはその名前空間におけるすべてのケーパ"
9920 #~ "ビリティが認められる。 マルチスレッドのプロセスは B<setns>() でユーザー名"
9921 #~ "前空間を変更できない。 B<setns>() を使って、呼び出し元が現在のユーザー名前"
9922 #~ "空間に再度入ることは認められていない。 これにより、 いくつかのケーパビリ"
9923 #~ "ティを外した呼び出し元が B<setns>() を呼び出すことでそれらのケーパビリティ"
9924 #~ "を再度得ることを防ぐことができる。 セキュリティ上の理由から、 ファイルシス"
9925 #~ "テム関連の属性 (共有が B<clone>(2) B<CLONE_FS> フラグで制御される属性) を"
9926 #~ "別のプロセスと共有している場合、 プロセスは新しいユーザー名前空間に参加で"
9927 #~ "きない。 ユーザー名前空間の詳細は B<user_namespaces>(7) を参照。"