OSDN Git Service

ee3eb75aa4e1a6c4c75185fce0f4c855cc423d5e
[linuxjm/LDP_man-pages.git] / po4a / man2 / 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: 2012-04-25 05:36+0900\n"
10 "PO-Revision-Date: 2012-03-23 04:49+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/man2/arch_prctl.2:24
20 #, no-wrap
21 msgid "ARCH_PRCTL"
22 msgstr "ARCH_PRCTL"
23
24 #. type: TH
25 #: build/C/man2/arch_prctl.2:24
26 #, no-wrap
27 msgid "2007-12-26"
28 msgstr "2007-12-26"
29
30 #. type: TH
31 #: build/C/man2/arch_prctl.2:24 build/C/man2/futex.2:17
32 #: build/C/man2/kexec_load.2:25 build/C/man2/lookup_dcookie.2:27
33 #: build/C/man2/modify_ldt.2:25 build/C/man2/nfsservctl.2:8
34 #: build/C/man2/outb.2:28 build/C/man2/pciconfig_read.2:5
35 #: build/C/man2/personality.2:30 build/C/man2/pivot_root.2:7
36 #: build/C/man2/ptrace.2:49 build/C/man2/quotactl.2:25
37 #: build/C/man2/sendfile.2:15 build/C/man2/set_tid_address.2:23
38 #: build/C/man2/splice.2:26 build/C/man2/tee.2:26 build/C/man2/vm86.2:26
39 #: build/C/man2/vmsplice.2:26
40 #, no-wrap
41 msgid "Linux"
42 msgstr "Linux"
43
44 #. type: TH
45 #: build/C/man2/arch_prctl.2:24 build/C/man2/futex.2:17
46 #: build/C/man2/kexec_load.2:25 build/C/man2/lookup_dcookie.2:27
47 #: build/C/man2/modify_ldt.2:25 build/C/man2/nfsservctl.2:8
48 #: build/C/man2/outb.2:28 build/C/man2/pciconfig_read.2:5
49 #: build/C/man2/personality.2:30 build/C/man2/pivot_root.2:7
50 #: build/C/man2/ptrace.2:49 build/C/man2/quotactl.2:25
51 #: build/C/man2/sendfile.2:15 build/C/man2/set_tid_address.2:23
52 #: build/C/man2/splice.2:26 build/C/man2/tee.2:26 build/C/man2/vm86.2:26
53 #: build/C/man2/vmsplice.2:26
54 #, no-wrap
55 msgid "Linux Programmer's Manual"
56 msgstr "Linux Programmer's Manual"
57
58 #. type: SH
59 #: build/C/man2/arch_prctl.2:25 build/C/man2/futex.2:18
60 #: build/C/man2/kexec_load.2:26 build/C/man2/lookup_dcookie.2:28
61 #: build/C/man2/modify_ldt.2:26 build/C/man2/nfsservctl.2:9
62 #: build/C/man2/outb.2:29 build/C/man2/pciconfig_read.2:6
63 #: build/C/man2/personality.2:31 build/C/man2/pivot_root.2:8
64 #: build/C/man2/ptrace.2:50 build/C/man2/quotactl.2:26
65 #: build/C/man2/sendfile.2:16 build/C/man2/set_tid_address.2:24
66 #: build/C/man2/splice.2:27 build/C/man2/tee.2:27 build/C/man2/vm86.2:27
67 #: build/C/man2/vmsplice.2:27
68 #, no-wrap
69 msgid "NAME"
70 msgstr "名前"
71
72 #. type: Plain text
73 #: build/C/man2/arch_prctl.2:27
74 msgid "arch_prctl - set architecture-specific thread state"
75 msgstr "arch_prctl - アーキテクチャ固有のスレッド状態を設定する"
76
77 #. type: SH
78 #: build/C/man2/arch_prctl.2:27 build/C/man2/futex.2:20
79 #: build/C/man2/kexec_load.2:28 build/C/man2/lookup_dcookie.2:30
80 #: build/C/man2/modify_ldt.2:28 build/C/man2/nfsservctl.2:11
81 #: build/C/man2/pciconfig_read.2:8 build/C/man2/personality.2:33
82 #: build/C/man2/pivot_root.2:10 build/C/man2/ptrace.2:52
83 #: build/C/man2/quotactl.2:28 build/C/man2/sendfile.2:18
84 #: build/C/man2/set_tid_address.2:26 build/C/man2/splice.2:29
85 #: build/C/man2/tee.2:29 build/C/man2/vm86.2:29 build/C/man2/vmsplice.2:29
86 #, no-wrap
87 msgid "SYNOPSIS"
88 msgstr "書式"
89
90 #. type: Plain text
91 #: build/C/man2/arch_prctl.2:30
92 #, no-wrap
93 msgid "B<#include E<lt>asm/prctl.hE<gt>>\n"
94 msgstr "B<#include E<lt>asm/prctl.hE<gt>>\n"
95
96 #. type: Plain text
97 #: build/C/man2/arch_prctl.2:32
98 #, no-wrap
99 msgid "B<#include E<lt>sys/prctl.hE<gt>>\n"
100 msgstr "B<#include E<lt>sys/prctl.hE<gt>>\n"
101
102 #. type: Plain text
103 #: build/C/man2/arch_prctl.2:35
104 #, no-wrap
105 msgid ""
106 "B<int arch_prctl(int >I<code>B<, unsigned long >I<addr>B<);>\n"
107 "B<int arch_prctl(int >I<code>B<, unsigned long *>I<addr>B<);>\n"
108 msgstr "B<int arch_prctl(int >I<code>B<, unsigned long *>I<addr>B<);>\n"
109
110 #.  Return type was long before glibc 2.7
111 #. type: SH
112 #: build/C/man2/arch_prctl.2:36 build/C/man2/futex.2:32
113 #: build/C/man2/kexec_load.2:35 build/C/man2/lookup_dcookie.2:32
114 #: build/C/man2/modify_ldt.2:34 build/C/man2/nfsservctl.2:18
115 #: build/C/man2/outb.2:33 build/C/man2/pciconfig_read.2:19
116 #: build/C/man2/personality.2:37 build/C/man2/pivot_root.2:12
117 #: build/C/man2/ptrace.2:59 build/C/man2/quotactl.2:36
118 #: build/C/man2/sendfile.2:43 build/C/man2/set_tid_address.2:32
119 #: build/C/man2/splice.2:39 build/C/man2/tee.2:38 build/C/man2/vm86.2:35
120 #: build/C/man2/vmsplice.2:39
121 #, no-wrap
122 msgid "DESCRIPTION"
123 msgstr "説明"
124
125 #. type: Plain text
126 #: build/C/man2/arch_prctl.2:51
127 msgid ""
128 "The B<arch_prctl>()  function sets architecture-specific process or thread "
129 "state.  I<code> selects a subfunction and passes argument I<addr> to it; "
130 "I<addr> is interpreted as either an I<unsigned long> for the \"set\" "
131 "operations, or as an I<unsigned long *>, for the \"get\" operations."
132 msgstr ""
133 "B<arch_prctl>()  関数はアーキテクチャ固有のプロセス状態またはスレッド状態を設"
134 "定する。 I<code> は副機能を選択し、引き数 I<addr> を副機能に渡す。 I<addr> "
135 "は、\"set\" 操作では I<unsigned long> として、\"get\" 操作では I<unsigned "
136 "long *> として解釈される。"
137
138 #. type: Plain text
139 #: build/C/man2/arch_prctl.2:53
140 msgid "Sub functions for x86-64 are:"
141 msgstr "x86-64 の副機能は以下の通り:"
142
143 #. type: TP
144 #: build/C/man2/arch_prctl.2:53
145 #, no-wrap
146 msgid "B<ARCH_SET_FS>"
147 msgstr "B<ARCH_SET_FS>"
148
149 #. type: Plain text
150 #: build/C/man2/arch_prctl.2:59
151 msgid "Set the 64-bit base for the I<FS> register to I<addr>."
152 msgstr "I<FS> レジスタの 64 ビットベースを I<addr> に設定する。"
153
154 #. type: TP
155 #: build/C/man2/arch_prctl.2:59
156 #, no-wrap
157 msgid "B<ARCH_GET_FS>"
158 msgstr "B<ARCH_GET_FS>"
159
160 #. type: Plain text
161 #: build/C/man2/arch_prctl.2:67
162 msgid ""
163 "Return the 64-bit base value for the I<FS> register of the current thread in "
164 "the I<unsigned long> pointed to by I<addr>."
165 msgstr ""
166 "現在のスレッドの I<FS> レジスタの 64 ビットベース値を、 I<addr> が指す "
167 "I<unsigned long> の領域に格納する。"
168
169 #. type: TP
170 #: build/C/man2/arch_prctl.2:67
171 #, no-wrap
172 msgid "B<ARCH_SET_GS>"
173 msgstr "B<ARCH_SET_GS>"
174
175 #. type: Plain text
176 #: build/C/man2/arch_prctl.2:73
177 msgid "Set the 64-bit base for the I<GS> register to I<addr>."
178 msgstr "I<GS> レジスタの 64 ビットベースを I<addr> に設定する。"
179
180 #. type: TP
181 #: build/C/man2/arch_prctl.2:73
182 #, no-wrap
183 msgid "B<ARCH_GET_GS>"
184 msgstr "B<ARCH_GET_GS>"
185
186 #. type: Plain text
187 #: build/C/man2/arch_prctl.2:81
188 msgid ""
189 "Return the 64-bit base value for the I<GS> register of the current thread in "
190 "the I<unsigned long> pointed to by I<addr>."
191 msgstr ""
192 "現在のスレッドの I<GS> レジスタの 64 ビットベース値を、 I<addr> が指す "
193 "I<unsigned long> の領域に格納する。"
194
195 #. type: SH
196 #: build/C/man2/arch_prctl.2:81 build/C/man2/futex.2:173
197 #: build/C/man2/kexec_load.2:110 build/C/man2/lookup_dcookie.2:43
198 #: build/C/man2/modify_ldt.2:96 build/C/man2/nfsservctl.2:51
199 #: build/C/man2/pciconfig_read.2:47 build/C/man2/personality.2:55
200 #: build/C/man2/pivot_root.2:95 build/C/man2/ptrace.2:1564
201 #: build/C/man2/sendfile.2:104 build/C/man2/set_tid_address.2:80
202 #: build/C/man2/splice.2:127 build/C/man2/tee.2:85 build/C/man2/vm86.2:52
203 #: build/C/man2/vmsplice.2:113
204 #, no-wrap
205 msgid "RETURN VALUE"
206 msgstr "返り値"
207
208 #. type: Plain text
209 #: build/C/man2/arch_prctl.2:87
210 msgid ""
211 "On success, B<arch_prctl>()  returns 0; on error, -1 is returned, and "
212 "I<errno> is set to indicate the error."
213 msgstr ""
214 "成功すると、 B<arch_prctl>()  は 0 を返す。エラーの場合、-1 を返し、 "
215 "I<errno> をエラーを示す値に設定する。"
216
217 #. type: SH
218 #: build/C/man2/arch_prctl.2:87 build/C/man2/futex.2:210
219 #: build/C/man2/kexec_load.2:117 build/C/man2/lookup_dcookie.2:50
220 #: build/C/man2/modify_ldt.2:106 build/C/man2/pciconfig_read.2:74
221 #: build/C/man2/personality.2:62 build/C/man2/pivot_root.2:99
222 #: build/C/man2/ptrace.2:1578 build/C/man2/quotactl.2:425
223 #: build/C/man2/sendfile.2:111 build/C/man2/set_tid_address.2:83
224 #: build/C/man2/splice.2:142 build/C/man2/tee.2:100 build/C/man2/vm86.2:57
225 #: build/C/man2/vmsplice.2:122
226 #, no-wrap
227 msgid "ERRORS"
228 msgstr "エラー"
229
230 #. type: TP
231 #: build/C/man2/arch_prctl.2:88 build/C/man2/futex.2:222
232 #: build/C/man2/lookup_dcookie.2:51 build/C/man2/modify_ldt.2:107
233 #: build/C/man2/ptrace.2:1582 build/C/man2/quotactl.2:426
234 #: build/C/man2/sendfile.2:121 build/C/man2/vm86.2:58
235 #, no-wrap
236 msgid "B<EFAULT>"
237 msgstr "B<EFAULT>"
238
239 #. type: Plain text
240 #: build/C/man2/arch_prctl.2:92
241 msgid ""
242 "I<addr> points to an unmapped address or is outside the process address "
243 "space."
244 msgstr ""
245 "I<addr> がアンマップされたアドレスを指しているか、プロセスのアドレス空間の外"
246 "にある。"
247
248 #. type: TP
249 #: build/C/man2/arch_prctl.2:92 build/C/man2/futex.2:227
250 #: build/C/man2/kexec_load.2:122 build/C/man2/lookup_dcookie.2:54
251 #: build/C/man2/modify_ldt.2:111 build/C/man2/pciconfig_read.2:75
252 #: build/C/man2/personality.2:63 build/C/man2/pivot_root.2:108
253 #: build/C/man2/ptrace.2:1593 build/C/man2/quotactl.2:432
254 #: build/C/man2/quotactl.2:499 build/C/man2/sendfile.2:124
255 #: build/C/man2/splice.2:147 build/C/man2/tee.2:101
256 #: build/C/man2/vmsplice.2:127
257 #, no-wrap
258 msgid "B<EINVAL>"
259 msgstr "B<EINVAL>"
260
261 #. type: Plain text
262 #: build/C/man2/arch_prctl.2:96
263 msgid "I<code> is not a valid subcommand."
264 msgstr "I<code> が有効なサブコマンドでない。"
265
266 #. type: TP
267 #: build/C/man2/arch_prctl.2:96 build/C/man2/kexec_load.2:129
268 #: build/C/man2/lookup_dcookie.2:65 build/C/man2/pciconfig_read.2:102
269 #: build/C/man2/pivot_root.2:114 build/C/man2/ptrace.2:1603
270 #: build/C/man2/quotactl.2:454 build/C/man2/vm86.2:66
271 #, no-wrap
272 msgid "B<EPERM>"
273 msgstr "B<EPERM>"
274
275 #.  .SH AUTHOR
276 #.  Man page written by Andi Kleen.
277 #. type: Plain text
278 #: build/C/man2/arch_prctl.2:102
279 msgid "I<addr> is outside the process address space."
280 msgstr "I<addr> がプロセスのアドレス空間の外にある。"
281
282 #. type: SH
283 #: build/C/man2/arch_prctl.2:102 build/C/man2/futex.2:247
284 #: build/C/man2/kexec_load.2:138 build/C/man2/lookup_dcookie.2:78
285 #: build/C/man2/modify_ldt.2:128 build/C/man2/nfsservctl.2:56
286 #: build/C/man2/outb.2:58 build/C/man2/pciconfig_read.2:107
287 #: build/C/man2/personality.2:66 build/C/man2/pivot_root.2:122
288 #: build/C/man2/ptrace.2:1621 build/C/man2/sendfile.2:144
289 #: build/C/man2/set_tid_address.2:89 build/C/man2/splice.2:169
290 #: build/C/man2/tee.2:118 build/C/man2/vm86.2:71 build/C/man2/vmsplice.2:142
291 #, no-wrap
292 msgid "CONFORMING TO"
293 msgstr "準拠"
294
295 #. type: Plain text
296 #: build/C/man2/arch_prctl.2:106
297 msgid ""
298 "B<arch_prctl>()  is a Linux/x86-64 extension and should not be used in "
299 "programs intended to be portable."
300 msgstr ""
301 "B<arch_prctl>()  は Linux/x86-64 拡張であり、移植性を意図したプログラムでは使"
302 "うべきでない。"
303
304 #. type: SH
305 #: build/C/man2/arch_prctl.2:106 build/C/man2/futex.2:249
306 #: build/C/man2/kexec_load.2:140 build/C/man2/lookup_dcookie.2:81
307 #: build/C/man2/modify_ldt.2:131 build/C/man2/pivot_root.2:125
308 #: build/C/man2/ptrace.2:1623 build/C/man2/sendfile.2:151
309 #: build/C/man2/splice.2:171 build/C/man2/tee.2:120
310 #: build/C/man2/vmsplice.2:144
311 #, no-wrap
312 msgid "NOTES"
313 msgstr "注意"
314
315 #. type: Plain text
316 #: build/C/man2/arch_prctl.2:109
317 msgid ""
318 "B<arch_prctl>()  is only supported on Linux/x86-64 for 64-bit programs "
319 "currently."
320 msgstr ""
321 "B<arch_prctl>()  は現在のところ Linux/x86-64 上の 64 ビットプログラムでのみサ"
322 "ポートされている。"
323
324 #. type: Plain text
325 #: build/C/man2/arch_prctl.2:111
326 msgid "The 64-bit base changes when a new 32-bit segment selector is loaded."
327 msgstr ""
328 "新しい 32 ビットセグメントセレクタがロードされた場合、 64 ビットベースは変更"
329 "される。"
330
331 #. type: Plain text
332 #: build/C/man2/arch_prctl.2:114
333 msgid "B<ARCH_SET_GS> is disabled in some kernels."
334 msgstr "B<ARCH_SET_GS> が無効にされているカーネルもある。"
335
336 #. type: Plain text
337 #: build/C/man2/arch_prctl.2:129
338 msgid ""
339 "Context switches for 64-bit segment bases are rather expensive.  It may be a "
340 "faster alternative to set a 32-bit base using a segment selector by setting "
341 "up an LDT with B<modify_ldt>(2)  or using the B<set_thread_area>(2)  system "
342 "call in kernel 2.5 or later.  B<arch_prctl>()  is only needed when you want "
343 "to set bases that are larger than 4GB.  Memory in the first 2GB of address "
344 "space can be allocated by using B<mmap>(2)  with the B<MAP_32BIT> flag."
345 msgstr ""
346 "64 ビットセグメントベースのコンテキストスイッチは、やや高価である。 LDT を "
347 "B<modify_ldt>(2)  で設定してセグメントセレクタを使うか、 (カーネル 2.5 以降"
348 "の)  B<set_thread_area>(2)  システムコールを使うことにより、 32 ビットベース"
349 "を設定するという高速な代替手段もある。 4GB より大きなベースを設定したい場合に"
350 "のみ、 B<arch_prctl>()  が必要である。 アドレス空間の最初の 2GB にあるメモリ"
351 "は、 B<mmap>(2)  に B<MAP_32BIT> フラグを指定して割り当てることができる。"
352
353 #. type: Plain text
354 #: build/C/man2/arch_prctl.2:134
355 msgid ""
356 "As of version 2.7, glibc provides no prototype for B<arch_prctl>().  You "
357 "have to declare it yourself for now.  This may be fixed in future glibc "
358 "versions."
359 msgstr ""
360 "バージョン 2.7 時点では、glibc には B<arch_prctl>()  のプロトタイプがない。 "
361 "今のところユーザは自分自身で宣言する必要がある。 これは将来の glibc のバー"
362 "ジョンで修正されるかもしれない。"
363
364 #. type: Plain text
365 #: build/C/man2/arch_prctl.2:137
366 msgid "I<FS> may be already used by the threading library."
367 msgstr "I<FS> はスレッドライブラリで既に使われているかもしれない。"
368
369 #. type: SH
370 #: build/C/man2/arch_prctl.2:137 build/C/man2/futex.2:263
371 #: build/C/man2/kexec_load.2:155 build/C/man2/modify_ldt.2:134
372 #: build/C/man2/outb.2:67 build/C/man2/pciconfig_read.2:109
373 #: build/C/man2/pivot_root.2:137 build/C/man2/ptrace.2:1730
374 #: build/C/man2/quotactl.2:505 build/C/man2/sendfile.2:193
375 #: build/C/man2/set_tid_address.2:91 build/C/man2/splice.2:225
376 #: build/C/man2/tee.2:196 build/C/man2/vmsplice.2:153
377 #, no-wrap
378 msgid "SEE ALSO"
379 msgstr "関連項目"
380
381 #. type: Plain text
382 #: build/C/man2/arch_prctl.2:142
383 msgid "B<mmap>(2), B<modify_ldt>(2), B<prctl>(2), B<set_thread_area>(2)"
384 msgstr "B<mmap>(2), B<modify_ldt>(2), B<prctl>(2), B<set_thread_area>(2)"
385
386 #. type: Plain text
387 #: build/C/man2/arch_prctl.2:143
388 msgid "AMD X86-64 Programmer's manual"
389 msgstr "AMD X86-64 Programmer's manual"
390
391 #. type: TH
392 #: build/C/man2/futex.2:17
393 #, no-wrap
394 msgid "FUTEX"
395 msgstr "FUTEX"
396
397 #. type: TH
398 #: build/C/man2/futex.2:17
399 #, no-wrap
400 msgid "2010-08-29"
401 msgstr "2010-08-29"
402
403 #. type: Plain text
404 #: build/C/man2/futex.2:20
405 msgid "futex - Fast Userspace Locking system call"
406 msgstr "futex - 高速ユーザ空間ロック機構のシステムコール"
407
408 #. type: Plain text
409 #: build/C/man2/futex.2:25
410 #, no-wrap
411 msgid ""
412 "B<#include E<lt>linux/futex.hE<gt>>\n"
413 "B<#include E<lt>sys/time.hE<gt>>\n"
414 msgstr ""
415 "B<#include E<lt>linux/futex.hE<gt>>\n"
416 "B<#include E<lt>sys/time.hE<gt>>\n"
417
418 #. type: Plain text
419 #: build/C/man2/futex.2:28
420 #, no-wrap
421 msgid "B<int futex(int *>I<uaddr>B<, int >I<op>B<, int >I<val>B<, const struct timespec *>I<timeout>B<,>\n"
422 msgstr "B<int futex(int *>I<uaddr>B<, int >I<op>B<, int >I<val>B<, const struct timespec *>I<timeout>B<,>\n"
423
424 #.  int *? void *? u32 *?
425 #. type: Plain text
426 #: build/C/man2/futex.2:31
427 #, no-wrap
428 msgid "B<          int *>I<uaddr2>B<, int >I<val3>B<);>\n"
429 msgstr "B<          int *>I<uaddr2>B<, int >I<val3>B<);>\n"
430
431 #. type: Plain text
432 #: build/C/man2/futex.2:48
433 msgid ""
434 "The B<futex>()  system call provides a method for a program to wait for a "
435 "value at a given address to change, and a method to wake up anyone waiting "
436 "on a particular address (while the addresses for the same memory in separate "
437 "processes may not be equal, the kernel maps them internally so the same "
438 "memory mapped in different locations will correspond for B<futex>()  "
439 "calls).  This system call is typically used to implement the contended case "
440 "of a lock in shared memory, as described in B<futex>(7)."
441 msgstr ""
442 "B<futex>()  システムコールは、 指定したアドレスの値が変更されるのをプログラム"
443 "が待つ手段や 特定のアドレスに対して待機中のプロセスを wake (起床) させる手段"
444 "を提供する (プロセスが異なれば同じメモリに対するアドレスも同じではないかもし"
445 "れないが、 カーネルは異なる位置にマップされた同じメモリを B<futex>()  で使え"
446 "るよう内部でマップする)。 通常は、このシステムコールは B<futex>(7)  に書かれ"
447 "ているように、 共有メモリ中のロックが競合する場合の処理を実装するのに用いられ"
448 "る。"
449
450 #. type: Plain text
451 #: build/C/man2/futex.2:55
452 msgid ""
453 "When a B<futex>(7)  operation did not finish uncontended in userspace, a "
454 "call needs to be made to the kernel to arbitrate.  Arbitration can either "
455 "mean putting the calling process to sleep or, conversely, waking a waiting "
456 "process."
457 msgstr ""
458 "B<futex>(7)  の操作がユーザ空間で競合なく完了しなかった場合、 カーネルに仲裁"
459 "させるためにシステムコールを呼ぶ必要がある。 仲裁というのは、呼び出しプロセス"
460 "を sleep (起床待ち) させたり、反対に 待ちプロセスを wake させたりすることを意"
461 "味する。"
462
463 #. type: Plain text
464 #: build/C/man2/futex.2:62
465 msgid ""
466 "Callers of this function are expected to adhere to the semantics as set out "
467 "in B<futex>(7).  As these semantics involve writing nonportable assembly "
468 "instructions, this in turn probably means that most users will in fact be "
469 "library authors and not general application developers."
470 msgstr ""
471 "この関数を呼び出すプロセスは B<futex>(7)  に記述されているセマンティクスに忠"
472 "実であることが要求される。 このセマンティクスには移植不可能なアセンブリ命令を"
473 "書くことが含まれる。 このことは言い換えると futex のユーザのほとんどは実際は"
474 "ライブラリの作者であり、 一般アプリケーションの開発者ではないということであ"
475 "る。"
476
477 #. type: Plain text
478 #: build/C/man2/futex.2:70
479 msgid ""
480 "The I<uaddr> argument needs to point to an aligned integer which stores the "
481 "counter.  The operation to execute is passed via the I<op> argument, along "
482 "with a value I<val>."
483 msgstr ""
484 "I<uaddr> 引き数は、カウンタを格納する、 アラインメントの揃った int 型変数を指"
485 "している必要がある。 実行する操作は I<op> 引き数を介して、値 I<val> とともに"
486 "渡される。"
487
488 #. type: Plain text
489 #: build/C/man2/futex.2:72
490 msgid "Five operations are currently defined:"
491 msgstr "現在のところ 5 つの操作が定義されている:"
492
493 #. type: TP
494 #: build/C/man2/futex.2:72 build/C/man2/futex.2:177
495 #, no-wrap
496 msgid "B<FUTEX_WAIT>"
497 msgstr "B<FUTEX_WAIT>"
498
499 #. type: Plain text
500 #: build/C/man2/futex.2:90
501 msgid ""
502 "This operation atomically verifies that the futex address I<uaddr> still "
503 "contains the value I<val>, and sleeps awaiting B<FUTEX_WAKE> on this futex "
504 "address.  If the I<timeout> argument is non-NULL, its contents describe the "
505 "maximum duration of the wait, which is infinite otherwise.  The arguments "
506 "I<uaddr2> and I<val3> are ignored."
507 msgstr ""
508 "この操作は futex アドレス I<uaddr> に指定された値 I<val> がまだ格納されている"
509 "かどうかを不可分操作で検証し、 sleep 状態で この futex アドレスに対して "
510 "B<FUTEX_WAKE> が実行されるのを待つ。 I<timeout> 引き数が NULL でない場合、そ"
511 "の内容は 待ち時間の最大値を表す。NULL の場合は無限大を表す。 引き数 "
512 "I<uaddr2> と I<val3> は無視される。"
513
514 #. type: Plain text
515 #: build/C/man2/futex.2:98
516 msgid ""
517 "For B<futex>(7), this call is executed if decrementing the count gave a "
518 "negative value (indicating contention), and will sleep until another process "
519 "releases the futex and executes the B<FUTEX_WAKE> operation."
520 msgstr ""
521 "B<futex>(7)  に照らし合わせると、この呼び出しは カウントのデクリメントで負の"
522 "値 (競合を表す) になった場合に実行され、 別のプロセスがその futex を解放し "
523 "B<FUTEX_WAKE> の操作を実行するまで sleep する。"
524
525 #. type: TP
526 #: build/C/man2/futex.2:98 build/C/man2/futex.2:194
527 #, no-wrap
528 msgid "B<FUTEX_WAKE>"
529 msgstr "B<FUTEX_WAKE>"
530
531 #. type: Plain text
532 #: build/C/man2/futex.2:109
533 msgid ""
534 "This operation wakes at most I<val> processes waiting on this futex address "
535 "(i.e., inside B<FUTEX_WAIT>).  The arguments I<timeout>, I<uaddr2> and "
536 "I<val3> are ignored."
537 msgstr ""
538 "この操作では指定した futex アドレスに対して待ち状態の (すなわち "
539 "B<FUTEX_WAIT> 中の) 最大 I<val> 個のプロセスを wake させる。 引き数 "
540 "I<timeout>, I<uaddr2>, I<val3> は無視される。"
541
542 #. type: Plain text
543 #: build/C/man2/futex.2:115
544 msgid ""
545 "For B<futex>(7), this is executed if incrementing the count showed that "
546 "there were waiters, once the futex value has been set to 1 (indicating that "
547 "it is available)."
548 msgstr ""
549 "B<futex>(4) に照らし合わせると、 この操作は カウントのインクリメントで待ちプ"
550 "ロセスがあると判明し、 futex 値が 1 に設定された (利用可能であることを表す) "
551 "場合に実行される。"
552
553 #. type: TP
554 #: build/C/man2/futex.2:115
555 #, no-wrap
556 msgid "B<FUTEX_FD> (present up to and including Linux 2.6.25)"
557 msgstr "B<FUTEX_FD> (Linux 2.6.25 以前)"
558
559 #.  , suitable for .BR poll (2).
560 #. type: Plain text
561 #: build/C/man2/futex.2:131
562 msgid ""
563 "To support asynchronous wakeups, this operation associates a file descriptor "
564 "with a futex.  If another process executes a B<FUTEX_WAKE>, the process will "
565 "receive the signal number that was passed in I<val>.  The calling process "
566 "must close the returned file descriptor after use.  The arguments "
567 "I<timeout>, I<uaddr2> and I<val3> are ignored."
568 msgstr ""
569 "非同期の wake に対応するため、この操作はファイルディスクリプタを futex に 関"
570 "連づける。 別のプロセスが B<FUTEX_WAKE> を実行すると、プロセスは I<val> で渡"
571 "されたシグナル番号のシグナルを受信する。 呼び出しプロセスは使用後、返された"
572 "ファイルディスクリプタを クローズしなければならない。 引き数 I<timeout>, "
573 "I<uaddr2>, I<val3> は無視される。"
574
575 #. type: Plain text
576 #: build/C/man2/futex.2:136
577 msgid ""
578 "To prevent race conditions, the caller should test if the futex has been "
579 "upped after B<FUTEX_FD> returns."
580 msgstr ""
581 "競合状態を防止するため、呼び出しプロセスは B<FUTEX_FD> が返ったあと futex が "
582 "up されたかどうかを確認しなければならない。"
583
584 #. type: Plain text
585 #: build/C/man2/futex.2:140
586 msgid ""
587 "Because it was inherently racy, B<FUTEX_FD> has been removed from Linux "
588 "2.6.26 onward."
589 msgstr ""
590 "B<FUTEX_FD> はもともと競合が起きやすかったため、 Linux 2.6.26 以降で削除され"
591 "ている。"
592
593 #. type: TP
594 #: build/C/man2/futex.2:140
595 #, no-wrap
596 msgid "B<FUTEX_REQUEUE> (since Linux 2.5.70)"
597 msgstr "B<FUTEX_REQUEUE> (Linux 2.5.70 以降)"
598
599 #. type: Plain text
600 #: build/C/man2/futex.2:155
601 msgid ""
602 "This operation was introduced in order to avoid a \"thundering herd\" effect "
603 "when B<FUTEX_WAKE> is used and all processes woken up need to acquire "
604 "another futex.  This call wakes up I<val> processes, and requeues all other "
605 "waiters on the futex at address I<uaddr2>.  The arguments I<timeout> and "
606 "I<val3> are ignored."
607 msgstr ""
608 "この操作は、 B<FUTEX_WAKE> が使われていて、かつ wake されている全てのプロセス"
609 "が 他の futex を取得する必要がある場合に、 「獣の群れの暴走 (thundering "
610 "herd)」効果を避けるために導入された。 この呼び出しは I<val> 個のプロセスを "
611 "wake し、アドレス I<uaddr2> で futex を待っている他の全てのプロセスを再度"
612 "キューにいれる。 引き数 I<timeout> と I<val3> は無視される。"
613
614 #. type: TP
615 #: build/C/man2/futex.2:155
616 #, no-wrap
617 msgid "B<FUTEX_CMP_REQUEUE> (since Linux 2.6.7)"
618 msgstr "B<FUTEX_CMP_REQUEUE> (Linux 2.6.7 以降)"
619
620 #. type: Plain text
621 #: build/C/man2/futex.2:173
622 msgid ""
623 "There was a race in the intended use of B<FUTEX_REQUEUE>, so "
624 "B<FUTEX_CMP_REQUEUE> was introduced.  This is similar to B<FUTEX_REQUEUE>, "
625 "but first checks whether the location I<uaddr> still contains the value "
626 "I<val3>.  If not, the operation fails with the error B<EAGAIN>.  The "
627 "argument I<timeout> is ignored."
628 msgstr ""
629 "故意に B<FUTEX_REQUEUE> を使う場合に競合が起こるため、 B<FUTEX_CMP_REQUEUE> "
630 "が導入された。これは B<FUTEX_REQUEUE> と似ているが、場所 I<uaddr> に値 "
631 "I<val3> がまだ保持されているかを最初にチェックする。 保持されていない場合、操"
632 "作はエラー B<EAGAIN> で失敗する。引き数 I<timeout> は無視される。"
633
634 #. type: Plain text
635 #: build/C/man2/futex.2:177
636 msgid ""
637 "Depending on which operation was executed, the returned value for a "
638 "successful call can have differing meanings."
639 msgstr "どの操作が実行されたかによって、 成功時の返り値の意味が変わる。"
640
641 #. type: Plain text
642 #: build/C/man2/futex.2:194
643 msgid ""
644 "Returns 0 if the process was woken by a B<FUTEX_WAKE> call.  In case of "
645 "timeout, the operation fails with the error B<ETIMEDOUT>.  If the futex was "
646 "not equal to the expected value, the operation fails with the error "
647 "B<EWOULDBLOCK>.  Signals (see B<signal>(7))  or other spurious wakeups cause "
648 "B<FUTEX_WAIT> to fail with the error B<EINTR>."
649 msgstr ""
650 "プロセスが B<FUTEX_WAKE> の呼び出しで wake すると 0 を返す。 タイムアウトの場"
651 "合、操作はエラー B<ETIMEOUT> で失敗する。 futex が指定された値と等しくない場"
652 "合、 エラー B<EWOULDBLOCK> で失敗する。 シグナルを受信するか (B<signal>(7)  "
653 "参照) 他の偽の wake があった場合には、エラー B<EINTR> で失敗する。"
654
655 #. type: Plain text
656 #: build/C/man2/futex.2:197 build/C/man2/futex.2:203 build/C/man2/futex.2:206
657 msgid "Returns the number of processes woken up."
658 msgstr "wake したプロセスの数を返す。"
659
660 #. type: TP
661 #: build/C/man2/futex.2:197
662 #, no-wrap
663 msgid "B<FUTEX_FD>"
664 msgstr "B<FUTEX_FD>"
665
666 #. type: Plain text
667 #: build/C/man2/futex.2:200
668 msgid "Returns the new file descriptor associated with the futex."
669 msgstr "futex に関連づけられた新たなファイルディスクリプタを返す。"
670
671 #. type: TP
672 #: build/C/man2/futex.2:200
673 #, no-wrap
674 msgid "B<FUTEX_REQUEUE>"
675 msgstr "B<FUTEX_REQUEUE>"
676
677 #. type: TP
678 #: build/C/man2/futex.2:203
679 #, no-wrap
680 msgid "B<FUTEX_CMP_REQUEUE>"
681 msgstr "B<FUTEX_CMP_REQUEUE>"
682
683 #. type: Plain text
684 #: build/C/man2/futex.2:210
685 msgid ""
686 "In the event of an error, all operations return -1, and set I<errno> to "
687 "indicate the error."
688 msgstr ""
689 "エラーの場合、全ての操作で -1 が返り、 I<errno> がエラーの内容を示す値に設定"
690 "される。"
691
692 #. type: TP
693 #: build/C/man2/futex.2:211 build/C/man2/quotactl.2:484
694 #, no-wrap
695 msgid "B<EACCES>"
696 msgstr "B<EACCES>"
697
698 #. type: Plain text
699 #: build/C/man2/futex.2:214
700 msgid "No read access to futex memory."
701 msgstr "futex メモリに読み込みアクセス権がなかった。"
702
703 #. type: TP
704 #: build/C/man2/futex.2:214 build/C/man2/sendfile.2:112
705 #, no-wrap
706 msgid "B<EAGAIN>"
707 msgstr "B<EAGAIN>"
708
709 #. type: Plain text
710 #: build/C/man2/futex.2:222
711 msgid ""
712 "B<FUTEX_CMP_REQUEUE> found an unexpected futex value.  (This probably "
713 "indicates a race; use the safe B<FUTEX_WAKE> now.)"
714 msgstr ""
715 "B<FUTEX_CMP_REQUEUE> で予期しない futex 値が見つかった (これは競合を示してい"
716 "るかもしれない。 この場合は安全な B<FUTEX_WAKE> を使うこと)。"
717
718 #. type: Plain text
719 #: build/C/man2/futex.2:227
720 msgid "Error in getting I<timeout> information from userspace."
721 msgstr "ユーザ空間から I<timeout> の情報を取得する際にエラーが発生した。"
722
723 #. type: Plain text
724 #: build/C/man2/futex.2:230
725 msgid "An operation was not defined or error in page alignment."
726 msgstr ""
727 "操作が定義されていない。またはページ・アラインメントでエラーが発生した。"
728
729 #. type: TP
730 #: build/C/man2/futex.2:230
731 #, no-wrap
732 msgid "B<ENFILE>"
733 msgstr "B<ENFILE>"
734
735 #. type: Plain text
736 #: build/C/man2/futex.2:233
737 msgid "The system limit on the total number of open files has been reached."
738 msgstr "オープンされているファイルの総数がシステムの制限に達した。"
739
740 #. type: TP
741 #: build/C/man2/futex.2:233 build/C/man2/modify_ldt.2:124
742 #: build/C/man2/pciconfig_read.2:90 build/C/man2/quotactl.2:445
743 #: build/C/man2/vm86.2:62
744 #, no-wrap
745 msgid "B<ENOSYS>"
746 msgstr "B<ENOSYS>"
747
748 #. type: Plain text
749 #: build/C/man2/futex.2:237
750 msgid "Invalid operation specified in I<op>."
751 msgstr "I<op> に無効な操作が指定された。"
752
753 #. type: SH
754 #: build/C/man2/futex.2:237 build/C/man2/kexec_load.2:134
755 #: build/C/man2/lookup_dcookie.2:73 build/C/man2/pivot_root.2:119
756 #: build/C/man2/sendfile.2:138 build/C/man2/set_tid_address.2:86
757 #: build/C/man2/splice.2:165 build/C/man2/tee.2:114
758 #: build/C/man2/vmsplice.2:138
759 #, no-wrap
760 msgid "VERSIONS"
761 msgstr "バージョン"
762
763 #. type: Plain text
764 #: build/C/man2/futex.2:247
765 msgid ""
766 "Initial futex support was merged in Linux 2.5.7 but with different semantics "
767 "from what was described above.  A 4-argument system call with the semantics "
768 "described in this page was introduced in Linux 2.5.40.  In Linux 2.5.70 one "
769 "argument was added.  In Linux 2.6.7 a sixth argument was added\\(emmessy, "
770 "especially on the s390 architecture."
771 msgstr ""
772 "最初の futex 対応は Linux 2.5.7 で組み込まれたが、 上記のセマンティクスとは異"
773 "なる。 4 つの引き数のここに書かれているセマンティクスを持つ システムコール"
774 "は、Linux 2.5.40 で導入された。 Linux 2.5.70 では 1 つの引き数が追加された。 "
775 "Linux 2.6.7 では 6 番目の引き数が追加された。 これは汚く、s390 アーキテクチャ"
776 "上の特別のものである。"
777
778 #. type: Plain text
779 #: build/C/man2/futex.2:249 build/C/man2/kexec_load.2:140
780 #: build/C/man2/set_tid_address.2:91 build/C/man2/splice.2:171
781 #: build/C/man2/tee.2:120 build/C/man2/vmsplice.2:144
782 msgid "This system call is Linux-specific."
783 msgstr "このシステムコールは Linux 固有である。"
784
785 #.  .SH "AUTHORS"
786 #.  .PP
787 #.  Futexes were designed and worked on by
788 #.  Hubertus Franke (IBM Thomas J. Watson Research Center),
789 #.  Matthew Kirkwood, Ingo Molnar (Red Hat)
790 #.  and Rusty Russell (IBM Linux Technology Center).
791 #.  This page written by bert hubert.
792 #. type: Plain text
793 #: build/C/man2/futex.2:263
794 msgid ""
795 "To reiterate, bare futexes are not intended as an easy-to-use abstraction "
796 "for end-users.  (There is no wrapper function for this system call in "
797 "glibc.)  Implementors are expected to be assembly literate and to have read "
798 "the sources of the futex userspace library referenced below."
799 msgstr ""
800 "繰り返すが、裸の futex はエンドユーザが容易に使うことのできる概念として 意図"
801 "されたものではない (glibc にはこのシステムコールに対するラッパー関数はな"
802 "い)。 実装者は、アセンブリ言語に慣れており、以下に挙げる futex ユーザ空間ライ"
803 "ブラリの ソースを読み終えていることが要求される。"
804
805 #. type: Plain text
806 #: build/C/man2/futex.2:265
807 msgid "B<futex>(7)"
808 msgstr "B<futex>(7)"
809
810 #. type: Plain text
811 #: build/C/man2/futex.2:268
812 msgid ""
813 "I<Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux> (proceedings "
814 "of the Ottawa Linux Symposium 2002), online at"
815 msgstr ""
816 "I<Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux> (proceedings "
817 "of the Ottawa Linux Symposium 2002), online at"
818
819 #. type: Plain text
820 #: build/C/man2/futex.2:270
821 msgid "http://kernel.org/doc/ols/2002/ols2002-pages-479-495.pdf"
822 msgstr "http://kernel.org/doc/ols/2002/ols2002-pages-479-495.pdf"
823
824 #. type: Plain text
825 #: build/C/man2/futex.2:272
826 msgid "Futex example library, futex-*.tar.bz2 at"
827 msgstr "futex の使用例ライブラリ, futex-*.tar.bz2"
828
829 #. type: Plain text
830 #: build/C/man2/futex.2:273
831 msgid "ftp://ftp.nl.kernel.org/pub/linux/kernel/people/rusty/."
832 msgstr "ftp://ftp.nl.kernel.org/pub/linux/kernel/people/rusty/."
833
834 #. type: TH
835 #: build/C/man2/kexec_load.2:25
836 #, no-wrap
837 msgid "KEXEC_LOAD"
838 msgstr "KEXEC_LOAD"
839
840 #. type: TH
841 #: build/C/man2/kexec_load.2:25
842 #, no-wrap
843 msgid "2010-11-04"
844 msgstr "2010-11-04"
845
846 #. type: Plain text
847 #: build/C/man2/kexec_load.2:28
848 msgid "kexec_load - load a new kernel for later execution"
849 msgstr "kexec_load - load a new kernel for later execution"
850
851 #. type: Plain text
852 #: build/C/man2/kexec_load.2:30
853 msgid "B<#include E<lt>linux/kexec.hE<gt>>"
854 msgstr "B<#include E<lt>linux/kexec.hE<gt>>"
855
856 #. type: Plain text
857 #: build/C/man2/kexec_load.2:32
858 msgid ""
859 "B<long kexec_load(unsigned long >I<entry>B<, unsigned long >I<nr_segments>B<,"
860 ">"
861 msgstr ""
862 "B<long kexec_load(unsigned long >I<entry>B<, unsigned long >I<nr_segments>B<,"
863 ">"
864
865 #. type: Plain text
866 #: build/C/man2/kexec_load.2:35
867 msgid "B< struct kexec_segment *>I<segments>B<, unsigned long >I<flags>B<);>"
868 msgstr "B< struct kexec_segment *>I<segments>B<, unsigned long >I<flags>B<);>"
869
870 #. type: Plain text
871 #: build/C/man2/kexec_load.2:40
872 msgid ""
873 "The B<kexec_load>()  system call loads a new kernel that can be executed "
874 "later by B<reboot>(2)."
875 msgstr ""
876 "The B<kexec_load>()  system call loads a new kernel that can be executed "
877 "later by B<reboot>(2)."
878
879 #. type: Plain text
880 #: build/C/man2/kexec_load.2:46
881 msgid ""
882 "The I<flags> argument is a mask whose high-order bits control the operation "
883 "of the call.  The following values can be specified in I<flags>:"
884 msgstr ""
885 "The I<flags> argument is a mask whose high-order bits control the operation "
886 "of the call.  The following values can be specified in I<flags>:"
887
888 #. type: TP
889 #: build/C/man2/kexec_load.2:46
890 #, no-wrap
891 msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
892 msgstr "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
893
894 #.  FIXME figure out how this is really used
895 #. type: Plain text
896 #: build/C/man2/kexec_load.2:50
897 msgid "Execute the new kernel automatically on a system crash."
898 msgstr "Execute the new kernel automatically on a system crash."
899
900 #. type: TP
901 #: build/C/man2/kexec_load.2:50
902 #, no-wrap
903 msgid "B<KEXEC_PRESERVE_CONTEXT> (since Linux 2.7.27)"
904 msgstr "B<KEXEC_PRESERVE_CONTEXT> (since Linux 2.7.27)"
905
906 #. type: Plain text
907 #: build/C/man2/kexec_load.2:60
908 msgid ""
909 "Preserve the system hardware and software states before executing the new "
910 "kernel.  This could be used for system suspend.  This flag is only available "
911 "if the kernel was configured with B<CONFIG_KEXEC_JUMP>, and is only "
912 "effective if I<nr_segments> is greater than 0."
913 msgstr ""
914 "Preserve the system hardware and software states before executing the new "
915 "kernel.  This could be used for system suspend.  This flag is only available "
916 "if the kernel was configured with B<CONFIG_KEXEC_JUMP>, and is only "
917 "effective if I<nr_segments> is greater than 0."
918
919 #. type: Plain text
920 #: build/C/man2/kexec_load.2:80
921 msgid ""
922 "The low-order bits of I<flags> contain the architecture of the to-be-"
923 "executed kernel.  Specify (OR) the constant B<KEXEC_ARCH_DEFAULT> to use the "
924 "current architecture, or one of the following architecture constants "
925 "B<KEXEC_ARCH_386>, B<KEXEC_ARCH_X86_64>, B<KEXEC_ARCH_PPC>, "
926 "B<KEXEC_ARCH_PPC64>, B<KEXEC_ARCH_IA_64>, B<KEXEC_ARCH_ARM>, "
927 "B<KEXEC_ARCH_S390>, B<KEXEC_ARCH_SH>, B<KEXEC_ARCH_MIPS>, and "
928 "B<KEXEC_ARCH_MIPS_LE>.  The architecture must be executable on the CPU of "
929 "the system."
930 msgstr ""
931 "The low-order bits of I<flags> contain the architecture of the to-be-"
932 "executed kernel.  Specify (OR) the constant B<KEXEC_ARCH_DEFAULT> to use the "
933 "current architecture, or one of the following architecture constants "
934 "B<KEXEC_ARCH_386>, B<KEXEC_ARCH_X86_64>, B<KEXEC_ARCH_PPC>, "
935 "B<KEXEC_ARCH_PPC64>, B<KEXEC_ARCH_IA_64>, B<KEXEC_ARCH_ARM>, "
936 "B<KEXEC_ARCH_S390>, B<KEXEC_ARCH_SH>, B<KEXEC_ARCH_MIPS>, and "
937 "B<KEXEC_ARCH_MIPS_LE>.  The architecture must be executable on the CPU of "
938 "the system."
939
940 #. type: Plain text
941 #: build/C/man2/kexec_load.2:94
942 msgid ""
943 "The I<entry> argument is the physical entry address in the kernel image.  "
944 "The I<nr_segments> argument is the number of segments pointed to by the "
945 "I<segments> pointer.  The I<segments> argument is an array of "
946 "I<kexec_segment> structures which define the kernel layout:"
947 msgstr ""
948 "The I<entry> argument is the physical entry address in the kernel image.  "
949 "The I<nr_segments> argument is the number of segments pointed to by the "
950 "I<segments> pointer.  The I<segments> argument is an array of "
951 "I<kexec_segment> structures which define the kernel layout:"
952
953 #. type: Plain text
954 #: build/C/man2/kexec_load.2:103
955 #, no-wrap
956 msgid ""
957 "struct kexec_segment {\n"
958 "    void   *buf;        /* Buffer in user space */\n"
959 "    size_t  bufsz;      /* Buffer length in user space */\n"
960 "    void   *mem;        /* Physical address of kernel */\n"
961 "    size_t  memsz;      /* Physical address length */\n"
962 "};\n"
963 msgstr ""
964 "struct kexec_segment {\n"
965 "    void   *buf;        /* Buffer in user space */\n"
966 "    size_t  bufsz;      /* Buffer length in user space */\n"
967 "    void   *mem;        /* Physical address of kernel */\n"
968 "    size_t  memsz;      /* Physical address length */\n"
969 "};\n"
970
971 #.  FIXME elaborate on the following:
972 #. type: Plain text
973 #: build/C/man2/kexec_load.2:110
974 msgid ""
975 "The kernel image defined by I<segments> is copied from the calling process "
976 "into previously reserved memory."
977 msgstr ""
978 "The kernel image defined by I<segments> is copied from the calling process "
979 "into previously reserved memory."
980
981 #. type: Plain text
982 #: build/C/man2/kexec_load.2:117
983 msgid ""
984 "On success, B<kexec_load>()  returns 0.  On error, -1 is returned and "
985 "I<errno> is set to indicate the error."
986 msgstr ""
987 "On success, B<kexec_load>()  returns 0.  On error, -1 is returned and "
988 "I<errno> is set to indicate the error."
989
990 #. type: TP
991 #: build/C/man2/kexec_load.2:118 build/C/man2/pivot_root.2:104
992 #: build/C/man2/ptrace.2:1579 build/C/man2/quotactl.2:493
993 #, no-wrap
994 msgid "B<EBUSY>"
995 msgstr "B<EBUSY>"
996
997 #. type: Plain text
998 #: build/C/man2/kexec_load.2:122
999 msgid ""
1000 "Another crash kernel is already being loaded or a crash kernel is already in "
1001 "use."
1002 msgstr ""
1003 "Another crash kernel is already being loaded or a crash kernel is already in "
1004 "use."
1005
1006 #.  KEXEC_SEGMENT_MAX == 16
1007 #. type: Plain text
1008 #: build/C/man2/kexec_load.2:129
1009 msgid "I<flags> is invalid; or I<nr_segments> is too large"
1010 msgstr "I<flags> is invalid; or I<nr_segments> is too large"
1011
1012 #. type: Plain text
1013 #: build/C/man2/kexec_load.2:134
1014 msgid "The caller does not have the B<CAP_SYS_BOOT> capability."
1015 msgstr "The caller does not have the B<CAP_SYS_BOOT> capability."
1016
1017 #. type: Plain text
1018 #: build/C/man2/kexec_load.2:138
1019 msgid "The B<kexec_load>()  system call first appeared in Linux 2.6.13."
1020 msgstr "The B<kexec_load>()  system call first appeared in Linux 2.6.13."
1021
1022 #. type: Plain text
1023 #: build/C/man2/kexec_load.2:145
1024 msgid ""
1025 "Currently, there is no glibc support for B<kexec_load>().  Call it using "
1026 "B<syscall>(2)."
1027 msgstr ""
1028 "Currently, there is no glibc support for B<kexec_load>().  Call it using "
1029 "B<syscall>(2)."
1030
1031 #.  FIXME Andi submitted a patch for this.
1032 #.  Check if it got accepted later.
1033 #. type: Plain text
1034 #: build/C/man2/kexec_load.2:152
1035 msgid ""
1036 "The required constants are in the kernel source file I<linux/kexec.h>, which "
1037 "is not currently exported to glibc.  Therefore, these constants must be "
1038 "defined manually."
1039 msgstr ""
1040 "The required constants are in the kernel source file I<linux/kexec.h>, which "
1041 "is not currently exported to glibc.  Therefore, these constants must be "
1042 "defined manually."
1043
1044 #. type: Plain text
1045 #: build/C/man2/kexec_load.2:155
1046 msgid ""
1047 "This system call is only available if the kernel was configured with "
1048 "B<CONFIG_KEXEC>."
1049 msgstr ""
1050 "This system call is only available if the kernel was configured with "
1051 "B<CONFIG_KEXEC>."
1052
1053 #. type: Plain text
1054 #: build/C/man2/kexec_load.2:157
1055 msgid "B<reboot>(2), B<syscall>(2)"
1056 msgstr "B<reboot>(2), B<syscall>(2)"
1057
1058 #. type: TH
1059 #: build/C/man2/lookup_dcookie.2:27
1060 #, no-wrap
1061 msgid "LOOKUP_DCOOKIE"
1062 msgstr "LOOKUP_DCOOKIE"
1063
1064 #. type: TH
1065 #: build/C/man2/lookup_dcookie.2:27
1066 #, no-wrap
1067 msgid "2004-06-17"
1068 msgstr "2004-06-17"
1069
1070 #. type: Plain text
1071 #: build/C/man2/lookup_dcookie.2:30
1072 msgid "lookup_dcookie - return a directory entry's path"
1073 msgstr "lookup_dcookie - ディレクトリ・エントリのパス名を返す"
1074
1075 #. type: Plain text
1076 #: build/C/man2/lookup_dcookie.2:32
1077 msgid ""
1078 "B<int lookup_dcookie(u64 >I<cookie>B<, char *>I<buffer>B<, size_t >I<len>B<);"
1079 ">"
1080 msgstr ""
1081 "B<int lookup_dcookie(u64 >I<cookie>B<, char *>I<buffer>B<, size_t >I<len>B<);"
1082 ">"
1083
1084 #. type: Plain text
1085 #: build/C/man2/lookup_dcookie.2:38
1086 msgid ""
1087 "Look up the full path of the directory entry specified by the value "
1088 "I<cookie>.  The cookie is an opaque identifier uniquely identifying a "
1089 "particular directory entry.  The buffer given is filled in with the full "
1090 "path of the directory entry."
1091 msgstr ""
1092 "I<cookie> 値で指定されたディレクトリ・エントリのフルパス名を検索する。 "
1093 "cookie は、個々のディレクトリ・エントリを区別する内部識別子 (opaque "
1094 "identifier) である。引き数で指定されたバッファに、ディレクトリ・エントリの フ"
1095 "ルパス名が格納される。"
1096
1097 #. type: Plain text
1098 #: build/C/man2/lookup_dcookie.2:43
1099 msgid ""
1100 "For B<lookup_dcookie>()  to return successfully, the kernel must still hold "
1101 "a cookie reference to the directory entry."
1102 msgstr ""
1103 "B<lookup_dcookie>()  が正常に値を返すためには、カーネルがディレクトリ・エント"
1104 "リへの cookie 参照を 保持していなければならない。"
1105
1106 #. type: Plain text
1107 #: build/C/man2/lookup_dcookie.2:50
1108 msgid ""
1109 "On success, B<lookup_dcookie>()  returns the length of the path string "
1110 "copied into the buffer.  On error, -1 is returned, and I<errno> is set "
1111 "appropriately."
1112 msgstr ""
1113 "成功した場合、 B<lookup_dcookie>()  はバッファにコピーしたパス文字列の長さを"
1114 "返す。 エラーの場合は -1 を返し、 I<errno> に適切な値を設定する。"
1115
1116 #. type: Plain text
1117 #: build/C/man2/lookup_dcookie.2:54
1118 msgid "The buffer was not valid."
1119 msgstr "バッファが有効でなかった。"
1120
1121 #. type: Plain text
1122 #: build/C/man2/lookup_dcookie.2:58
1123 msgid ""
1124 "The kernel has no registered cookie/directory entry mappings at the time of "
1125 "lookup, or the cookie does not refer to a valid directory entry."
1126 msgstr ""
1127 "検索が行われた時、cookie とディレクトリ・エントリのマッピングがカーネルに 登"
1128 "録されていなかったか、または cookie が有効なディレクトリ・エントリを 参照して"
1129 "いない。"
1130
1131 #. type: TP
1132 #: build/C/man2/lookup_dcookie.2:58
1133 #, no-wrap
1134 msgid "B<ENAMETOOLONG>"
1135 msgstr "B<ENAMETOOLONG>"
1136
1137 #. type: Plain text
1138 #: build/C/man2/lookup_dcookie.2:61
1139 msgid "The name could not fit in the buffer."
1140 msgstr "名前がバッファに入り切らなかった。"
1141
1142 #. type: TP
1143 #: build/C/man2/lookup_dcookie.2:61 build/C/man2/sendfile.2:134
1144 #: build/C/man2/splice.2:155 build/C/man2/tee.2:111
1145 #: build/C/man2/vmsplice.2:135
1146 #, no-wrap
1147 msgid "B<ENOMEM>"
1148 msgstr "B<ENOMEM>"
1149
1150 #. type: Plain text
1151 #: build/C/man2/lookup_dcookie.2:65
1152 msgid ""
1153 "The kernel could not allocate memory for the temporary buffer holding the "
1154 "path."
1155 msgstr ""
1156 "カーネルが、パス名を保持する一時バッファ用のメモリを割り当てることが できな"
1157 "かった。"
1158
1159 #. type: Plain text
1160 #: build/C/man2/lookup_dcookie.2:70
1161 msgid ""
1162 "The process does not have the capability B<CAP_SYS_ADMIN> required to look "
1163 "up cookie values."
1164 msgstr ""
1165 "プロセスが cookie 値を検索するのに必要なケーパビリティ B<CAP_SYS_ADMIN> を"
1166 "持っていない。"
1167
1168 #. type: TP
1169 #: build/C/man2/lookup_dcookie.2:70 build/C/man2/quotactl.2:472
1170 #, no-wrap
1171 msgid "B<ERANGE>"
1172 msgstr "B<ERANGE>"
1173
1174 #. type: Plain text
1175 #: build/C/man2/lookup_dcookie.2:73
1176 msgid ""
1177 "The buffer was not large enough to hold the path of the directory entry."
1178 msgstr ""
1179 "バッファが、ディレクトリ・エントリのパス名を収容するのに 十分な大きさではな"
1180 "かった。"
1181
1182 #. type: Plain text
1183 #: build/C/man2/lookup_dcookie.2:78
1184 msgid ""
1185 "Available since Linux 2.5.43.  The B<ENAMETOOLONG> error return was added in "
1186 "2.5.70."
1187 msgstr ""
1188 "Linux 2.5.43 以降で利用できる。 エラー B<ENAMETOOLONG> を返す仕様は 2.5.70 で"
1189 "追加された。"
1190
1191 #. type: Plain text
1192 #: build/C/man2/lookup_dcookie.2:81
1193 msgid "B<lookup_dcookie>()  is Linux-specific."
1194 msgstr "B<lookup_dcookie>()  は Linux 独自の関数である。"
1195
1196 #. type: Plain text
1197 #: build/C/man2/lookup_dcookie.2:85
1198 msgid ""
1199 "B<lookup_dcookie>()  is a special-purpose system call, currently used only "
1200 "by the oprofile profiler.  It relies on a kernel driver to register cookies "
1201 "for directory entries."
1202 msgstr ""
1203 "B<lookup_dcookie>()  は特殊な用途に使われるシステムコールで、現在のところ "
1204 "oprofile profiler で 使われているだけである。"
1205
1206 #. type: Plain text
1207 #: build/C/man2/lookup_dcookie.2:87
1208 msgid ""
1209 "The path returned may be suffixed by the string \" (deleted)\" if the "
1210 "directory entry has been removed."
1211 msgstr ""
1212 "指定されたディレクトリ・エントリが削除されていた場合、返されるパス名の最後に "
1213 "\" (deleted)\" という文字列が付加されることがある。"
1214
1215 #. type: TH
1216 #: build/C/man2/modify_ldt.2:25
1217 #, no-wrap
1218 msgid "MODIFY_LDT"
1219 msgstr "MODIFY_LDT"
1220
1221 #. type: TH
1222 #: build/C/man2/modify_ldt.2:25 build/C/man2/pivot_root.2:7
1223 #, no-wrap
1224 msgid "2007-06-01"
1225 msgstr "2007-06-01"
1226
1227 #. type: Plain text
1228 #: build/C/man2/modify_ldt.2:28
1229 msgid "modify_ldt - get or set ldt"
1230 msgstr "modify_ldt - ldt を設定または取得する"
1231
1232 #. type: Plain text
1233 #: build/C/man2/modify_ldt.2:31
1234 #, no-wrap
1235 msgid "B<#include E<lt>sys/types.hE<gt>>\n"
1236 msgstr "B<#include E<lt>sys/types.hE<gt>>\n"
1237
1238 #. type: Plain text
1239 #: build/C/man2/modify_ldt.2:33
1240 #, no-wrap
1241 msgid "B<int modify_ldt(int >I<func>B<, void *>I<ptr>B<, unsigned long >I<bytecount>B<);>\n"
1242 msgstr "B<int modify_ldt(int >I<func>B<, void *>I<ptr>B<, unsigned long >I<bytecount>B<);>\n"
1243
1244 #. type: Plain text
1245 #: build/C/man2/modify_ldt.2:39
1246 msgid ""
1247 "B<modify_ldt>()  reads or writes the local descriptor table (ldt) for a "
1248 "process.  The ldt is a per-process memory management table used by the i386 "
1249 "processor.  For more information on this table, see an Intel 386 processor "
1250 "handbook."
1251 msgstr ""
1252 "B<modify_ldt>()  はプロセスのローカル・ディスクリプタ・テーブル (local "
1253 "descriptor table; ldt)  を読み書きする。 ldt は i386 プロセッサで使用されるプ"
1254 "ロセスごとのメモリ管理テーブルである。 このテーブルに関してのより詳しい情報"
1255 "は Intel 386 processor handbook を 参照すること。"
1256
1257 #. type: Plain text
1258 #: build/C/man2/modify_ldt.2:49
1259 msgid ""
1260 "When I<func> is 0, B<modify_ldt>()  reads the ldt into the memory pointed to "
1261 "by I<ptr>.  The number of bytes read is the smaller of I<bytecount> and the "
1262 "actual size of the ldt."
1263 msgstr ""
1264 "I<func> が 0 ならば、 B<modify_ldt>()  は ldt を I<ptr> が指しているメモリに"
1265 "読み込む。 読み込むバイト数は実際の ldt のサイズか I<bytecount> より小さい方"
1266 "である。"
1267
1268 #.  FIXME ? say something about func == 2 and func == 0x11?
1269 #.  In Linux 2.4, func == 2 returned "the default ldt"
1270 #.  In Linux 2.6, func == 2 is a nop, returning a zeroed out structure.
1271 #.  Linux 2.4 and 2.6 implement an operation for func == 0x11
1272 #. type: Plain text
1273 #: build/C/man2/modify_ldt.2:67
1274 msgid ""
1275 "When I<func> is 1, B<modify_ldt>()  modifies one ldt entry.  I<ptr> points "
1276 "to a I<user_desc> structure and I<bytecount> must equal the size of this "
1277 "structure."
1278 msgstr ""
1279 "I<func> が 1 ならば、 B<modify_ldt>()  は ldt エントリの一つを変更する。 "
1280 "I<ptr> は I<user_desc> 構造体を指し、 I<bytecount> はこの構造体の大きさに等し"
1281 "くなければならない。"
1282
1283 #. type: Plain text
1284 #: build/C/man2/modify_ldt.2:71
1285 msgid "The I<user_desc> structure is defined in I<E<lt>asm/ldt.hE<gt>> as:"
1286 msgstr ""
1287 "I<user_desc> 構造体は I<E<lt>asm/ldt.hE<gt>> で以下のように定義されている:"
1288
1289 #. type: Plain text
1290 #: build/C/man2/modify_ldt.2:85
1291 #, no-wrap
1292 msgid ""
1293 "struct user_desc {\n"
1294 "    unsigned int  entry_number;\n"
1295 "    unsigned long base_addr;\n"
1296 "    unsigned int  limit;\n"
1297 "    unsigned int  seg_32bit:1;\n"
1298 "    unsigned int  contents:2;\n"
1299 "    unsigned int  read_exec_only:1;\n"
1300 "    unsigned int  limit_in_pages:1;\n"
1301 "    unsigned int  seg_not_present:1;\n"
1302 "    unsigned int  useable:1;\n"
1303 "};\n"
1304 msgstr ""
1305 "struct user_desc {\n"
1306 "    unsigned int  entry_number;\n"
1307 "    unsigned long base_addr;\n"
1308 "    unsigned int  limit;\n"
1309 "    unsigned int  seg_32bit:1;\n"
1310 "    unsigned int  contents:2;\n"
1311 "    unsigned int  read_exec_only:1;\n"
1312 "    unsigned int  limit_in_pages:1;\n"
1313 "    unsigned int  seg_not_present:1;\n"
1314 "    unsigned int  useable:1;\n"
1315 "};\n"
1316
1317 #.  .PP
1318 #.  The ldt is specific for the calling process. Any attempts to change
1319 #.  the ldt to include the address space of another process or the kernel
1320 #.  will result in a segmentation violation when trying to access the memory
1321 #.  outside of the process address space. The memory protection is enforced
1322 #.  at the paging layer.
1323 #. type: Plain text
1324 #: build/C/man2/modify_ldt.2:96
1325 msgid "In Linux 2.4 and earlier, this structure was named I<modify_ldt_ldt_s>."
1326 msgstr ""
1327 "Linux 2.4 以前では、この構造体は I<modify_ldt_ldt_s> という名前であった。"
1328
1329 #. type: Plain text
1330 #: build/C/man2/modify_ldt.2:106
1331 msgid ""
1332 "On success, B<modify_ldt>()  returns either the actual number of bytes read "
1333 "(for reading)  or 0 (for writing).  On failure, B<modify_ldt>()  returns -1 "
1334 "and sets I<errno> to indicate the error."
1335 msgstr ""
1336 "成功した場合は、 B<modify_ldt>()  は (読み込みの場合は) 実際に読み込んだバイ"
1337 "ト数、 または (書き込みの場合は) 0 を返す。 失敗した場合は B<modify_ldt>()  "
1338 "は -1 を返し、 I<errno> をエラーを示す値に設定する。"
1339
1340 #. type: Plain text
1341 #: build/C/man2/modify_ldt.2:111
1342 msgid "I<ptr> points outside the address space."
1343 msgstr "I<ptr> がアドレス空間の外を指している。"
1344
1345 #. type: Plain text
1346 #: build/C/man2/modify_ldt.2:124
1347 msgid ""
1348 "I<ptr> is 0, or I<func> is 1 and I<bytecount> is not equal to the size of "
1349 "the structure I<modify_ldt_ldt_s>, or I<func> is 1 and the new ldt entry has "
1350 "invalid values."
1351 msgstr ""
1352 "I<ptr> が 0 である、 または I<func> が 1 で I<bytecount> が "
1353 "I<modify_ldt_ldt_s> 構造体のサイズと等しくないか、 I<func> が 1 で新しい ldt "
1354 "エントリが無効な値である。"
1355
1356 #. type: Plain text
1357 #: build/C/man2/modify_ldt.2:128
1358 msgid "I<func> is neither 0 nor 1."
1359 msgstr "I<func> が 0 でも 1 でもない。"
1360
1361 #. type: Plain text
1362 #: build/C/man2/modify_ldt.2:131
1363 msgid ""
1364 "This call is Linux-specific and should not be used in programs intended to "
1365 "be portable."
1366 msgstr ""
1367 "このコールは Linux 特有であり、移植を意図したプログラムでは 使用してはいけな"
1368 "い。"
1369
1370 #. type: Plain text
1371 #: build/C/man2/modify_ldt.2:134 build/C/man2/pivot_root.2:128
1372 msgid ""
1373 "Glibc does not provide a wrapper for this system call; call it using "
1374 "B<syscall>(2)."
1375 msgstr ""
1376 "glibc はこのシステムコールに対するラッパー関数を提供していない。 B<syscall>"
1377 "(2)  を使って呼び出すこと。"
1378
1379 #. type: Plain text
1380 #: build/C/man2/modify_ldt.2:135
1381 msgid "B<vm86>(2)"
1382 msgstr "B<vm86>(2)"
1383
1384 #. type: TH
1385 #: build/C/man2/nfsservctl.2:8
1386 #, no-wrap
1387 msgid "NFSSERVCTL"
1388 msgstr "NFSSERVCTL"
1389
1390 #. type: TH
1391 #: build/C/man2/nfsservctl.2:8
1392 #, fuzzy, no-wrap
1393 #| msgid "2009-03-30"
1394 msgid "2012-03-05"
1395 msgstr "2009-03-30"
1396
1397 #. type: Plain text
1398 #: build/C/man2/nfsservctl.2:11
1399 msgid "nfsservctl - syscall interface to kernel nfs daemon"
1400 msgstr "nfsservctl - カーネル nfs デーモンのためのインターフェース"
1401
1402 #. type: Plain text
1403 #: build/C/man2/nfsservctl.2:14
1404 #, no-wrap
1405 msgid "B<#include E<lt>linux/nfsd/syscall.hE<gt>>\n"
1406 msgstr "B<#include E<lt>linux/nfsd/syscall.hE<gt>>\n"
1407
1408 #. type: Plain text
1409 #: build/C/man2/nfsservctl.2:17
1410 #, no-wrap
1411 msgid ""
1412 "B<long nfsservctl(int >I<cmd>B<, struct nfsctl_arg *>I<argp>B<,>\n"
1413 "B<                union nfsctl_res *>I<resp>B<);>\n"
1414 msgstr ""
1415 "B<long nfsservctl(int >I<cmd>B<, struct nfsctl_arg *>I<argp>B<,>\n"
1416 "B<                union nfsctl_res *>I<resp>B<);>\n"
1417
1418 #. type: Plain text
1419 #: build/C/man2/nfsservctl.2:21
1420 msgid "I<Note>: Since Linux 3.1, this system call no longer exists."
1421 msgstr ""
1422
1423 #. type: Plain text
1424 #: build/C/man2/nfsservctl.2:33
1425 #, no-wrap
1426 msgid ""
1427 "/*\n"
1428 " * These are the commands understood by nfsctl().\n"
1429 " */\n"
1430 "#define NFSCTL_SVC          0    /* This is a server process. */\n"
1431 "#define NFSCTL_ADDCLIENT    1    /* Add an NFS client. */\n"
1432 "#define NFSCTL_DELCLIENT    2    /* Remove an NFS client. */\n"
1433 "#define NFSCTL_EXPORT       3    /* export a file system. */\n"
1434 "#define NFSCTL_UNEXPORT     4    /* unexport a file system. */\n"
1435 "#define NFSCTL_UGIDUPDATE   5    /* update a client's UID/GID map. */\n"
1436 "#define NFSCTL_GETFH        6    /* get an fh (used by mountd) */\n"
1437 msgstr ""
1438 "/*\n"
1439 " * nfsctl() によって理解されるコマンド\n"
1440 " */\n"
1441 "#define NFSCTL_SVC          0    /* サーバープロセス */\n"
1442 "#define NFSCTL_ADDCLIENT    1    /* NFS クライアントを追加 */\n"
1443 "#define NFSCTL_DELCLIENT    2    /* NFS クライアンドを削除 */\n"
1444 "#define NFSCTL_EXPORT       3    /* ファイルシステムのエクスポート */\n"
1445 "#define NFSCTL_UNEXPORT     4    /* ファイルシステムのアンエクスポート */\n"
1446 "#define NFSCTL_UGIDUPDATE   5    /* UID/GID マップの更新 */\n"
1447 "#define NFSCTL_GETFH        6    /* (mountd で使用される) fh の取得 */\n"
1448
1449 #. type: Plain text
1450 #: build/C/man2/nfsservctl.2:45
1451 #, no-wrap
1452 msgid ""
1453 "struct nfsctl_arg {\n"
1454 "    int                       ca_version;     /* safeguard */\n"
1455 "    union {\n"
1456 "        struct nfsctl_svc     u_svc;\n"
1457 "        struct nfsctl_client  u_client;\n"
1458 "        struct nfsctl_export  u_export;\n"
1459 "        struct nfsctl_uidmap  u_umap;\n"
1460 "        struct nfsctl_fhparm  u_getfh;\n"
1461 "        unsigned int          u_debug;\n"
1462 "    } u;\n"
1463 "}\n"
1464 msgstr ""
1465 "struct nfsctl_arg {\n"
1466 "    int                       ca_version;     /* safeguard */\n"
1467 "    union {\n"
1468 "        struct nfsctl_svc     u_svc;\n"
1469 "        struct nfsctl_client  u_client;\n"
1470 "        struct nfsctl_export  u_export;\n"
1471 "        struct nfsctl_uidmap  u_umap;\n"
1472 "        struct nfsctl_fhparm  u_getfh;\n"
1473 "        unsigned int          u_debug;\n"
1474 "    } u;\n"
1475 "}\n"
1476
1477 #. type: Plain text
1478 #: build/C/man2/nfsservctl.2:50
1479 #, no-wrap
1480 msgid ""
1481 "union nfsctl_res {\n"
1482 "        struct knfs_fh          cr_getfh;\n"
1483 "        unsigned int            cr_debug;\n"
1484 "};\n"
1485 msgstr ""
1486 "union nfsctl_res {\n"
1487 "        struct knfs_fh          cr_getfh;\n"
1488 "        unsigned int            cr_debug;\n"
1489 "};\n"
1490
1491 #. type: Plain text
1492 #: build/C/man2/nfsservctl.2:56 build/C/man2/pivot_root.2:99
1493 #: build/C/man2/vm86.2:57
1494 msgid ""
1495 "On success, zero is returned.  On error, -1 is returned, and I<errno> is set "
1496 "appropriately."
1497 msgstr ""
1498 "成功した場合は 0 が返される。エラーの場合は -1 が返され、 I<errno> が適切に設"
1499 "定される。"
1500
1501 #. type: Plain text
1502 #: build/C/man2/nfsservctl.2:57
1503 msgid "This call is Linux-specific."
1504 msgstr "このコールは Linux 特有である。"
1505
1506 #. type: TH
1507 #: build/C/man2/outb.2:28
1508 #, no-wrap
1509 msgid "OUTB"
1510 msgstr "OUTB"
1511
1512 #. type: TH
1513 #: build/C/man2/outb.2:28
1514 #, no-wrap
1515 msgid "1995-11-29"
1516 msgstr "1995-11-29"
1517
1518 #. type: Plain text
1519 #: build/C/man2/outb.2:33
1520 msgid ""
1521 "outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, "
1522 "outb_p, outw_p, outl_p, inb_p, inw_p, inl_p - port I/O"
1523 msgstr ""
1524 "outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, "
1525 "outb_p, outw_p, outl_p, inb_p, inw_p, inl_p - ポート入出力"
1526
1527 #. type: Plain text
1528 #: build/C/man2/outb.2:38
1529 msgid ""
1530 "This family of functions is used to do low-level port input and output.  The "
1531 "out* functions do port output, the in* functions do port input; the b-suffix "
1532 "functions are byte-width and the w-suffix functions word-width; the _p-"
1533 "suffix functions pause until the I/O completes."
1534 msgstr ""
1535 "この一連の関数はポートに対する低レベルの入出力に使用する。 out* 関数はポート"
1536 "出力、in* 関数はポート入力を行う。 語尾に b がついている関数はバイト単位、w "
1537 "がついている関数はワード単位である。 _p がついている関数は I/O が終了するまで"
1538 "待つ。"
1539
1540 #.  , given the following information
1541 #.  in addition to that given in
1542 #.  .BR outb (9).
1543 #. type: Plain text
1544 #: build/C/man2/outb.2:44
1545 msgid ""
1546 "They are primarily designed for internal kernel use, but can be used from "
1547 "user space."
1548 msgstr ""
1549 "これらの関数はもともとカーネル内部での使用を想定して設計されているが、 ユー"
1550 "ザー空間からでも使用できる。"
1551
1552 #. type: Plain text
1553 #: build/C/man2/outb.2:49
1554 msgid ""
1555 "You compile with B<-O> or B<-O2> or similar.  The functions are defined as "
1556 "inline macros, and will not be substituted in without optimization enabled, "
1557 "causing unresolved references at link time."
1558 msgstr ""
1559 "B<-O> や B<-O2> などを指定してコンパイルすること。 これらの関数はインライン・"
1560 "マクロとして定義されており、 最適化を行わないと関数の展開が行われず、 リンク"
1561 "の時に「解決できない参照(unresolved reference)」が発生する。"
1562
1563 #. type: Plain text
1564 #: build/C/man2/outb.2:58
1565 msgid ""
1566 "You use B<ioperm>(2)  or alternatively B<iopl>(2)  to tell the kernel to "
1567 "allow the user space application to access the I/O ports in question.  "
1568 "Failure to do this will cause the application to receive a segmentation "
1569 "fault."
1570 msgstr ""
1571 "ユーザー空間のアプリケーションが I/O ポートにアクセスすることを カーネルに教"
1572 "えるために B<ioperm>(2)  もしくは B<iopl>(2)  を使用すること。これを忘れると"
1573 "アプリケーションはセグメンテーション違反 (segmentation fault) を受けとること"
1574 "になる。"
1575
1576 #. type: Plain text
1577 #: build/C/man2/outb.2:67
1578 msgid ""
1579 "B<outb>()  and friends are hardware-specific.  The I<value> argument is "
1580 "passed first and the I<port> argument is passed second, which is the "
1581 "opposite order from most DOS implementations."
1582 msgstr ""
1583 "B<outb>()  とその仲間はハードウェア特有である。 I<value> 引数が最初に渡さ"
1584 "れ、 I<port> 引数が二番目に渡される。 この順序はほとんどの DOS での実装とは逆"
1585 "である。"
1586
1587 #. type: Plain text
1588 #: build/C/man2/outb.2:69
1589 msgid "B<ioperm>(2), B<iopl>(2)"
1590 msgstr "B<ioperm>(2), B<iopl>(2)"
1591
1592 #. type: TH
1593 #: build/C/man2/pciconfig_read.2:5
1594 #, no-wrap
1595 msgid "PCICONFIG_READ"
1596 msgstr "PCICONFIG_READ"
1597
1598 #. type: TH
1599 #: build/C/man2/pciconfig_read.2:5
1600 #, no-wrap
1601 msgid "2003-07-14"
1602 msgstr "2003-07-14"
1603
1604 #. type: Plain text
1605 #: build/C/man2/pciconfig_read.2:8
1606 msgid ""
1607 "pciconfig_read, pciconfig_write, pciconfig_iobase - pci device information "
1608 "handling"
1609 msgstr ""
1610 "pciconfig_read, pciconfig_write, pciconfig_iobase - pci デバイス情報を扱う"
1611
1612 #. type: Plain text
1613 #: build/C/man2/pciconfig_read.2:11
1614 #, no-wrap
1615 msgid "B<#include E<lt>pci.hE<gt>>\n"
1616 msgstr "B<#include E<lt>pci.hE<gt>>\n"
1617
1618 #. type: Plain text
1619 #: build/C/man2/pciconfig_read.2:18
1620 #, no-wrap
1621 msgid ""
1622 "B<int pciconfig_read(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
1623 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
1624 "B<int pciconfig_write(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
1625 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
1626 "B<int pciconfig_iobase(long >I<which>B<, unsigned long >I<bus>B<,>\n"
1627 "B<          unsigned long >I<devfn>B<);>\n"
1628 msgstr ""
1629 "B<int pciconfig_read(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
1630 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
1631 "B<int pciconfig_write(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
1632 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
1633 "B<int pciconfig_iobase(long >I<which>B<, unsigned long >I<bus>B<,>\n"
1634 "B<          unsigned long >I<devfn>B<);>\n"
1635
1636 #. type: Plain text
1637 #: build/C/man2/pciconfig_read.2:24
1638 msgid ""
1639 "Most of the interaction with PCI devices is already handled by the kernel "
1640 "PCI layer, and thus these calls should not normally need to be accessed from "
1641 "userspace."
1642 msgstr ""
1643 "PCI デバイスとのやり取り (interaction) は カーネル PCI レイヤですでに処理され"
1644 "ているので、 通常はこららの関数をユーザ空間からアクセスする必要はない。"
1645
1646 #. type: TP
1647 #: build/C/man2/pciconfig_read.2:24 build/C/man2/pciconfig_read.2:48
1648 #, no-wrap
1649 msgid "B<pciconfig_read>()"
1650 msgstr "B<pciconfig_read>()"
1651
1652 #. type: Plain text
1653 #: build/C/man2/pciconfig_read.2:33
1654 msgid "Reads to I<buf> from device I<dev> at offset I<off> value."
1655 msgstr "デバイス I<dev> のオフセット I<off> の値を I<buf> に読み込む。"
1656
1657 #. type: TP
1658 #: build/C/man2/pciconfig_read.2:33 build/C/man2/pciconfig_read.2:54
1659 #, no-wrap
1660 msgid "B<pciconfig_write>()"
1661 msgstr "B<pciconfig_write>()"
1662
1663 #. type: Plain text
1664 #: build/C/man2/pciconfig_read.2:42
1665 msgid "Writes from I<buf> to device I<dev> at offset I<off> value."
1666 msgstr "デバイス I<dev> のオフセット I<off> に I<buf> の値を書き込む。"
1667
1668 #. type: TP
1669 #: build/C/man2/pciconfig_read.2:42 build/C/man2/pciconfig_read.2:60
1670 #, no-wrap
1671 msgid "B<pciconfig_iobase>()"
1672 msgstr "B<pciconfig_iobase>()"
1673
1674 #. type: Plain text
1675 #: build/C/man2/pciconfig_read.2:47
1676 msgid ""
1677 "You pass it a bus/devfn pair and get a physical address for either the "
1678 "memory offset (for things like prep, this is 0xc0000000), the IO base for "
1679 "PIO cycles, or the ISA holes if any."
1680 msgstr ""
1681 "bus/devfn ペアをこの関数に渡し、 メモリオフセット (prep のようなものでは、こ"
1682 "の値は 0xc0000000 である) と PIO サイクルの IO ベースの物理アドレスを取得す"
1683 "る。 また、もしあるならば ISA hole の物理アドレスを取得する。"
1684
1685 #. type: Plain text
1686 #: build/C/man2/pciconfig_read.2:54 build/C/man2/pciconfig_read.2:60
1687 msgid ""
1688 "On success zero is returned.  On error, -1 is returned and I<errno> is set "
1689 "appropriately."
1690 msgstr ""
1691 "成功した場合、0 が返される。 エラーの場合、-1 が返され、 I<errno> が適切に設"
1692 "定される。"
1693
1694 #. type: Plain text
1695 #: build/C/man2/pciconfig_read.2:74
1696 msgid ""
1697 "Returns information on locations of various I/O regions in physical memory "
1698 "according to the I<which> value.  Values for I<which> are: "
1699 "B<IOBASE_BRIDGE_NUMBER>, B<IOBASE_MEMORY>, B<IOBASE_IO>, B<IOBASE_ISA_IO>, "
1700 "B<IOBASE_ISA_MEM>."
1701 msgstr ""
1702 "I<which> の値に基づいて、物理メモリ内の様々な I/O 領域の位置情報が返される。 "
1703 "I<which> の値は、 B<IOBASE_BRIDGE_NUMBER>, B<IOBASE_MEMORY>, B<IOBASE_IO>, "
1704 "B<IOBASE_ISA_IO>, B<IOBASE_ISA_MEM> である。"
1705
1706 #. type: Plain text
1707 #: build/C/man2/pciconfig_read.2:81
1708 msgid "I<len> value is invalid.  This does not apply to B<pciconfig_iobase>()."
1709 msgstr ""
1710 "I<len> の値が無効である。 このエラーは B<pciconfig_iobase>()  には適用されな"
1711 "い。"
1712
1713 #. type: TP
1714 #: build/C/man2/pciconfig_read.2:81 build/C/man2/ptrace.2:1596
1715 #: build/C/man2/sendfile.2:130
1716 #, no-wrap
1717 msgid "B<EIO>"
1718 msgstr "B<EIO>"
1719
1720 #. type: Plain text
1721 #: build/C/man2/pciconfig_read.2:84
1722 msgid "I/O error."
1723 msgstr "I/O エラー。"
1724
1725 #. type: TP
1726 #: build/C/man2/pciconfig_read.2:84
1727 #, no-wrap
1728 msgid "B<ENODEV>"
1729 msgstr "B<ENODEV>"
1730
1731 #. type: Plain text
1732 #: build/C/man2/pciconfig_read.2:90
1733 msgid ""
1734 "For B<pciconfig_iobase>(), \"hose\" value is NULL.  For the other calls, "
1735 "could not find a slot."
1736 msgstr ""
1737 "B<pciconfig_iobase>()  の場合、でホース (hose) の値が NULL である。 他の呼び"
1738 "出しの場合、スロット (slot) が見つからない。"
1739
1740 #. type: Plain text
1741 #: build/C/man2/pciconfig_read.2:95
1742 msgid "The system has not implemented these calls (B<CONFIG_PCI> not defined)."
1743 msgstr ""
1744 "このシステムはこれらの呼び出しを実装していない。 (B<CONFIG_PCI> が定義されて"
1745 "いない)。"
1746
1747 #. type: TP
1748 #: build/C/man2/pciconfig_read.2:95
1749 #, no-wrap
1750 msgid "B<EOPNOTSUPP>"
1751 msgstr "B<EOPNOTSUPP>"
1752
1753 #. type: Plain text
1754 #: build/C/man2/pciconfig_read.2:102
1755 msgid ""
1756 "This return value is only valid for B<pciconfig_iobase>().  It is returned "
1757 "if the value for I<which> is invalid."
1758 msgstr ""
1759 "この返り値は B<pciconfig_iobase>()  でのみ有効である。 このエラーは I<which> "
1760 "の値が無効であるときに返される。"
1761
1762 #. type: Plain text
1763 #: build/C/man2/pciconfig_read.2:107
1764 msgid ""
1765 "User does not have the B<CAP_SYS_ADMIN> capability.  This does not apply to "
1766 "B<pciconfig_iobase>()."
1767 msgstr ""
1768 "ユーザが B<CAP_SYS_ADMIN> 権限を持っていない。 このエラーは "
1769 "B<pciconfig_iobase>()  には適用されない。"
1770
1771 #. type: Plain text
1772 #: build/C/man2/pciconfig_read.2:109
1773 msgid "These calls are Linux-specific, available since Linux 2.0.26/2.1.11."
1774 msgstr ""
1775 "これらの呼び出しは Linux 特有のものであり、 Linux 2.0.26/2.1.11 から使用可能"
1776 "である。"
1777
1778 #. type: Plain text
1779 #: build/C/man2/pciconfig_read.2:110
1780 msgid "B<capabilities>(7)"
1781 msgstr "B<capabilities>(7)"
1782
1783 #. type: TH
1784 #: build/C/man2/personality.2:30
1785 #, no-wrap
1786 msgid "PERSONALITY"
1787 msgstr "PERSONALITY"
1788
1789 #. type: TH
1790 #: build/C/man2/personality.2:30
1791 #, no-wrap
1792 msgid "2003-01-01"
1793 msgstr "2003-01-01"
1794
1795 #. type: Plain text
1796 #: build/C/man2/personality.2:33
1797 msgid "personality - set the process execution domain"
1798 msgstr "personality - プロセスを実行するドメインを設定する"
1799
1800 #. type: Plain text
1801 #: build/C/man2/personality.2:35
1802 msgid "B<#include E<lt>sys/personality.hE<gt>>"
1803 msgstr "B<#include E<lt>sys/personality.hE<gt>>"
1804
1805 #. type: Plain text
1806 #: build/C/man2/personality.2:37
1807 msgid "B<int personality(unsigned long >I<persona>B<);>"
1808 msgstr "B<int personality(unsigned long >I<persona>B<);>"
1809
1810 #. type: Plain text
1811 #: build/C/man2/personality.2:45
1812 msgid ""
1813 "Linux supports different execution domains, or personalities, for each "
1814 "process.  Among other things, execution domains tell Linux how to map signal "
1815 "numbers into signal actions.  The execution domain system allows Linux to "
1816 "provide limited support for binaries compiled under other UNIX-like "
1817 "operating systems."
1818 msgstr ""
1819 "Linux は、プロセス毎の異なる実行ドメイン、すなわち パーソナリティ "
1820 "(personality) をサポートしている。 実行ドメインは Linux にシグナル番号にどの"
1821 "シグナルを割り付けるかを 教えたりする。また、実行ドメイン・システムにより、 "
1822 "Linux は他の UNIX 風のオペレーティング・システムでコンパイルされた バイナリに"
1823 "対する限定的なサポートを提供している。"
1824
1825 #. type: Plain text
1826 #: build/C/man2/personality.2:55
1827 msgid ""
1828 "This function will return the current B<personality>()  when I<persona> "
1829 "equals 0xffffffff.  Otherwise, it will make the execution domain referenced "
1830 "by I<persona> the new execution domain of the calling process."
1831 msgstr ""
1832 "B<personality ()> 関数は、 I<persona> が 0xffffffff の場合は現在の B<パーソナ"
1833 "リティ> を返す。 それ以外の場合、 I<persona> により参照される実行ドメイン"
1834 "を、 呼び出し元のプロセスの新しい実行ドメインとする。"
1835
1836 #. type: Plain text
1837 #: build/C/man2/personality.2:62
1838 msgid ""
1839 "On success, the previous I<persona> is returned.  On error, -1 is returned, "
1840 "and I<errno> is set appropriately."
1841 msgstr ""
1842 "成功した場合、以前の I<persona> が返される。エラーの場合は、-1 が返され、 "
1843 "I<errno> が適切に設定される。"
1844
1845 #. type: Plain text
1846 #: build/C/man2/personality.2:66
1847 msgid "The kernel was unable to change the personality."
1848 msgstr "カーネルがパーソナリティを変更できなかった。"
1849
1850 #. type: Plain text
1851 #: build/C/man2/personality.2:69
1852 msgid ""
1853 "B<personality>()  is Linux-specific and should not be used in programs "
1854 "intended to be portable."
1855 msgstr ""
1856 "B<personality>()  は Linux 固有であり、移植を意図したプログラムで使用すべきで"
1857 "はない。"
1858
1859 #. type: TH
1860 #: build/C/man2/pivot_root.2:7
1861 #, no-wrap
1862 msgid "PIVOT_ROOT"
1863 msgstr "PIVOT_ROOT"
1864
1865 #. type: Plain text
1866 #: build/C/man2/pivot_root.2:10
1867 msgid "pivot_root - change the root file system"
1868 msgstr "pivot_root - root ファイルシステムを変更する"
1869
1870 #. type: Plain text
1871 #: build/C/man2/pivot_root.2:12
1872 msgid ""
1873 "B<int pivot_root(const char *>I<new_root>B<, const char *>I<put_old>B<);>"
1874 msgstr ""
1875 "B<int pivot_root(const char *>I<new_root>B<, const char *>I<put_old>B<);>"
1876
1877 #.  The
1878 #.  .B CAP_SYS_ADMIN
1879 #.  capability is required.
1880 #. type: Plain text
1881 #: build/C/man2/pivot_root.2:21
1882 msgid ""
1883 "B<pivot_root>()  moves the root file system of the calling process to the "
1884 "directory I<put_old> and makes I<new_root> the new root file system of the "
1885 "calling process."
1886 msgstr ""
1887 "B<pivot_root>()  は呼び出し元のプロセスの root ファイルシステムを I<put_old> "
1888 "ディレクトリに移動し、 I<new_root> を呼び出し元のプロセスの新しい root ファイ"
1889 "ルシステムにする。"
1890
1891 #. type: Plain text
1892 #: build/C/man2/pivot_root.2:28
1893 msgid ""
1894 "The typical use of B<pivot_root>()  is during system startup, when the "
1895 "system mounts a temporary root file system (e.g., an B<initrd>), then mounts "
1896 "the real root file system, and eventually turns the latter into the current "
1897 "root of all relevant processes or threads."
1898 msgstr ""
1899 "B<pivot_root>()  の典型的な利用法は、システムの起動中にシステムが一時的な "
1900 "root ファイルシステム (例えば B<initrd>)  をマウントし、これに続いて本当の "
1901 "root ファイルシステムをマウントし、 後者を必要な全てのプロセス・スレッドの カ"
1902 "レント root に変更するような場合である。"
1903
1904 #. type: Plain text
1905 #: build/C/man2/pivot_root.2:40
1906 msgid ""
1907 "B<pivot_root>()  may or may not change the current root and the current "
1908 "working directory of any processes or threads which use the old root "
1909 "directory.  The caller of B<pivot_root>()  must ensure that processes with "
1910 "root or current working directory at the old root operate correctly in "
1911 "either case.  An easy way to ensure this is to change their root and current "
1912 "working directory to I<new_root> before invoking B<pivot_root>()."
1913 msgstr ""
1914 "古い root ディレクトリを使っていた全てのプロセスやスレッドの カレント root と"
1915 "カレントワーキングディレクトリを、 B<pivot_root>()  が変更するかどうかはわか"
1916 "らない。 B<pivot_root>()  の呼びだしプロセスは、古い root やカレントワーキン"
1917 "グディレクトリを使っていた プロセスが、いずれの場合でも正しく動作することを保"
1918 "証しなければならない。 これを簡単に行うには、それらのプロセスの root と カレ"
1919 "ントワーキングディレクトリを B<pivot_root>()  を呼び出す前に I<new_root> に変"
1920 "更しておくことである。"
1921
1922 #. type: Plain text
1923 #: build/C/man2/pivot_root.2:58
1924 msgid ""
1925 "The paragraph above is intentionally vague because the implementation of "
1926 "B<pivot_root>()  may change in the future.  At the time of writing, "
1927 "B<pivot_root>()  changes root and current working directory of each process "
1928 "or thread to I<new_root> if they point to the old root directory.  This is "
1929 "necessary in order to prevent kernel threads from keeping the old root "
1930 "directory busy with their root and current working directory, even if they "
1931 "never access the file system in any way.  In the future, there may be a "
1932 "mechanism for kernel threads to explicitly relinquish any access to the file "
1933 "system, such that this fairly intrusive mechanism can be removed from "
1934 "B<pivot_root>()."
1935 msgstr ""
1936 "上記の段落は、将来 B<pivot_root>()  が変更されるかも知れないことを鑑みて、わ"
1937 "ざと曖昧に書いてある。 本ページを記述している時点では、 B<pivot_root>()  は古"
1938 "い root ディレクトリを用いている全てのプロセス・スレッドの root と カレント"
1939 "ワーキングディレクトリを I<new_root> に変更する。これはカーネルのスレッドが古"
1940 "い root ディレクトリを busy 状態にしないために必要である。これらのスレッドが "
1941 "古いディレクトリを root やカレントワーキングディレクトリとしていると、 ファイ"
1942 "ルシステムに一切アクセスしない場合でも 古い root が busy になってしまうからで"
1943 "ある。 将来は、カーネルスレッドがあらゆるファイルシステムへのアクセスを 明示"
1944 "的に放棄するメカニズムができ、このでしゃばりな機能は B<pivot_root>()  から削"
1945 "除されるかもしれない。"
1946
1947 #. type: Plain text
1948 #: build/C/man2/pivot_root.2:66
1949 msgid ""
1950 "Note that this also applies to the calling process: B<pivot_root>()  may or "
1951 "may not affect its current working directory.  It is therefore recommended "
1952 "to call B<chdir(\"/\")> immediately after B<pivot_root>()."
1953 msgstr ""
1954 "これは呼び出し元のプロセスについても当てはまることに注意。 B<pivot_root>()  "
1955 "がカレントプロセスのカレントワーキングディレクトリに影響するかどうかは 分から"
1956 "ない。したがって B<pivot_root>()  の直後に B<chdir(\"/\")> を呼び出すとよい。"
1957
1958 #. type: Plain text
1959 #: build/C/man2/pivot_root.2:68
1960 msgid "The following restrictions apply to I<new_root> and I<put_old>:"
1961 msgstr "I<new_root> および I<put_old> には以下の制限がある:"
1962
1963 #. type: IP
1964 #: build/C/man2/pivot_root.2:68 build/C/man2/pivot_root.2:70
1965 #: build/C/man2/pivot_root.2:73 build/C/man2/pivot_root.2:77
1966 #, no-wrap
1967 msgid "-"
1968 msgstr "-"
1969
1970 #. type: Plain text
1971 #: build/C/man2/pivot_root.2:70
1972 msgid "They must be directories."
1973 msgstr "ディレクトリでなければならない。"
1974
1975 #. type: Plain text
1976 #: build/C/man2/pivot_root.2:73
1977 msgid ""
1978 "I<new_root> and I<put_old> must not be on the same file system as the "
1979 "current root."
1980 msgstr ""
1981 "I<new_root> と I<put_old> は現在の root と同じファイルシステムにあってはなら"
1982 "ない。"
1983
1984 #. type: Plain text
1985 #: build/C/man2/pivot_root.2:77
1986 msgid ""
1987 "I<put_old> must be underneath I<new_root>, that is, adding a nonzero number "
1988 "of I</..> to the string pointed to by I<put_old> must yield the same "
1989 "directory as I<new_root>."
1990 msgstr ""
1991 "I<put_old> は I<new_root> 以下になければならない。すなわち I<put_old> を差す"
1992 "文字列に 1 個以上の I<../> を付けることによって I<new_root> と同じディレクト"
1993 "リが得られなければならない。"
1994
1995 #. type: Plain text
1996 #: build/C/man2/pivot_root.2:79
1997 msgid "No other file system may be mounted on I<put_old>."
1998 msgstr "他のファイルシステムが I<put_old> にマウントされていてはならない。"
1999
2000 #. type: Plain text
2001 #: build/C/man2/pivot_root.2:83
2002 msgid "See also B<pivot_root>(8)  for additional usage examples."
2003 msgstr "利用例については B<pivot_root>(8)  を参照のこと。"
2004
2005 #. type: Plain text
2006 #: build/C/man2/pivot_root.2:90
2007 msgid ""
2008 "If the current root is not a mount point (e.g., after B<chroot>(2)  or "
2009 "B<pivot_root>(), see also below), not the old root directory, but the mount "
2010 "point of that file system is mounted on I<put_old>."
2011 msgstr ""
2012 "現在の root がマウントポイントではない (B<chroot>(2)  や B<pivot_root>()  の"
2013 "後など。以下も参照) 場合、 古い root ディレクトリではなく、 そのファイルシス"
2014 "テムのマウントポイントが I<put_old> にマウントされる。"
2015
2016 #. type: Plain text
2017 #: build/C/man2/pivot_root.2:95
2018 msgid ""
2019 "I<new_root> does not have to be a mount point.  In this case, I</proc/"
2020 "mounts> will show the mount point of the file system containing I<new_root> "
2021 "as root (I</>)."
2022 msgstr ""
2023 "I<new_root> はマウントポイントでなくてもよい。 この場合 I</proc/mounts> は、 "
2024 "I<new_root> を root (I</>)  とするファイルシステムのマウントポイントを表示す"
2025 "る。"
2026
2027 #. type: Plain text
2028 #: build/C/man2/pivot_root.2:104
2029 msgid ""
2030 "B<pivot_root>()  may return (in I<errno>) any of the errors returned by "
2031 "B<stat>(2).  Additionally, it may return:"
2032 msgstr ""
2033 "B<pivot_root>()  は B<stat>(2)  の返すあらゆるエラーを (I<errno> に) 返す可能"
2034 "性がある。さらに以下を返すことがある:"
2035
2036 #. type: Plain text
2037 #: build/C/man2/pivot_root.2:108
2038 msgid ""
2039 "I<new_root> or I<put_old> are on the current root file system, or a file "
2040 "system is already mounted on I<put_old>."
2041 msgstr ""
2042 "I<new_root> または I<put_old> が、現在の root ファイルシステム上にあるか、既"
2043 "に I<put_old> になんらかのファイルシステムがマウントされている。"
2044
2045 #. type: Plain text
2046 #: build/C/man2/pivot_root.2:111
2047 msgid "I<put_old> is not underneath I<new_root>."
2048 msgstr "I<put_old> が I<new_root> の下層にない。"
2049
2050 #. type: TP
2051 #: build/C/man2/pivot_root.2:111
2052 #, no-wrap
2053 msgid "B<ENOTDIR>"
2054 msgstr "B<ENOTDIR>"
2055
2056 #. type: Plain text
2057 #: build/C/man2/pivot_root.2:114
2058 msgid "I<new_root> or I<put_old> is not a directory."
2059 msgstr "I<new_root> または I<put_old> がディレクトリでない。"
2060
2061 #. type: Plain text
2062 #: build/C/man2/pivot_root.2:119
2063 msgid "The calling process does not have the B<CAP_SYS_ADMIN> capability."
2064 msgstr "呼び出し元のプロセスが B<CAP_SYS_ADMIN> ケーパビリティを持っていない。"
2065
2066 #. type: Plain text
2067 #: build/C/man2/pivot_root.2:122
2068 msgid "B<pivot_root>()  was introduced in Linux 2.3.41."
2069 msgstr "B<pivot_root>()  は Linux 2.3.41 で導入された。"
2070
2071 #. type: Plain text
2072 #: build/C/man2/pivot_root.2:125
2073 msgid "B<pivot_root>()  is Linux-specific and hence is not portable."
2074 msgstr "B<pivot_root>()  は Linux に固有のものなので、移植性はない。"
2075
2076 #. type: SH
2077 #: build/C/man2/pivot_root.2:128 build/C/man2/ptrace.2:1659
2078 #, no-wrap
2079 msgid "BUGS"
2080 msgstr "バグ"
2081
2082 #. type: Plain text
2083 #: build/C/man2/pivot_root.2:132
2084 msgid ""
2085 "B<pivot_root>()  should not have to change root and current working "
2086 "directory of all other processes in the system."
2087 msgstr ""
2088 "B<pivot_root>()  はシステムの他のプロセス全ての root と カレントワーキング"
2089 "ディレクトリとを変更しなくてもよいはずである。"
2090
2091 #. type: Plain text
2092 #: build/C/man2/pivot_root.2:137
2093 msgid ""
2094 "Some of the more obscure uses of B<pivot_root>()  may quickly lead to "
2095 "insanity."
2096 msgstr ""
2097 "B<pivot_root>()  の使い方がもうちょっと曖昧になると、 あっという間にわけのわ"
2098 "からない状態になってしまうだろう"
2099
2100 #. type: Plain text
2101 #: build/C/man2/pivot_root.2:142
2102 msgid "B<chdir>(2), B<chroot>(2), B<stat>(2), B<initrd>(4), B<pivot_root>(8)"
2103 msgstr "B<chdir>(2), B<chroot>(2), B<stat>(2), B<initrd>(4), B<pivot_root>(8)"
2104
2105 #. type: TH
2106 #: build/C/man2/ptrace.2:49
2107 #, no-wrap
2108 msgid "PTRACE"
2109 msgstr "PTRACE"
2110
2111 #. type: TH
2112 #: build/C/man2/ptrace.2:49
2113 #, fuzzy, no-wrap
2114 #| msgid "2009-03-30"
2115 msgid "2012-03-30"
2116 msgstr "2009-03-30"
2117
2118 #. type: Plain text
2119 #: build/C/man2/ptrace.2:52
2120 msgid "ptrace - process trace"
2121 msgstr "ptrace - プロセスのトレース"
2122
2123 #. type: Plain text
2124 #: build/C/man2/ptrace.2:55
2125 #, no-wrap
2126 msgid "B<#include E<lt>sys/ptrace.hE<gt>>\n"
2127 msgstr "B<#include E<lt>sys/ptrace.hE<gt>>\n"
2128
2129 #. type: Plain text
2130 #: build/C/man2/ptrace.2:58
2131 #, no-wrap
2132 msgid ""
2133 "B<long ptrace(enum __ptrace_request >I<request>B<, pid_t >I<pid>B<, >\n"
2134 "B<            void *>I<addr>B<, void *>I<data>B<);>\n"
2135 msgstr ""
2136 "B<long ptrace(enum __ptrace_request >I<request>B<, pid_t >I<pid>B<, >\n"
2137 "B<            void *>I<addr>B<, void *>I<data>B<);>\n"
2138
2139 #. type: Plain text
2140 #: build/C/man2/ptrace.2:67
2141 #, fuzzy
2142 #| msgid ""
2143 #| "The B<ptrace>()  system call provides a means by which a parent process "
2144 #| "may observe and control the execution of another process, and examine and "
2145 #| "change its core image and registers.  It is primarily used to implement "
2146 #| "breakpoint debugging and system call tracing."
2147 msgid ""
2148 "The B<ptrace>()  system call provides a means by which one process (the "
2149 "\"tracer\")  may observe and control the execution of another process (the "
2150 "\"tracee\"), and examine and change the tracee's memory and registers.  It "
2151 "is primarily used to implement breakpoint debugging and system call tracing."
2152 msgstr ""
2153 "B<ptrace>()  システムコールは、親プロセスが、別のプロセスの実行の監視/制御を "
2154 "行ったり、コアイメージ (core image) やレジスタの調査/変更を 行ったりする手段"
2155 "を提供する。 B<ptrace>()  は、主にブレークポイントによるデバッグやシステム"
2156 "コールのトレースを 実装するのに用いられる。"
2157
2158 #. type: Plain text
2159 #: build/C/man2/ptrace.2:78
2160 msgid ""
2161 "A tracee first needs to be attached to the tracer.  Attachment and "
2162 "subsequent commands are per thread: in a multithreaded process, every thread "
2163 "can be individually attached to a (potentially different) tracer, or left "
2164 "not attached and thus not debugged.  Therefore, \"tracee\" always means "
2165 "\"(one) thread\", never \"a (possibly multithreaded) process\".  Ptrace "
2166 "commands are always sent to a specific tracee using a call of the form"
2167 msgstr ""
2168
2169 #. type: Plain text
2170 #: build/C/man2/ptrace.2:80
2171 #, no-wrap
2172 msgid "    ptrace(PTRACE_foo, pid, ...)\n"
2173 msgstr ""
2174
2175 #. type: Plain text
2176 #: build/C/man2/ptrace.2:84
2177 msgid "where I<pid> is the thread ID of the corresponding Linux thread."
2178 msgstr ""
2179
2180 #. type: Plain text
2181 #: build/C/man2/ptrace.2:90
2182 msgid ""
2183 "(Note that in this page, a \"multithreaded process\" means a thread group "
2184 "consisting of threads created using the B<clone>(2)  B<CLONE_THREAD> flag.)"
2185 msgstr ""
2186
2187 #. type: Plain text
2188 #: build/C/man2/ptrace.2:99
2189 #, fuzzy
2190 #| msgid ""
2191 #| "The parent can initiate a trace by calling B<fork>(2)  and having the "
2192 #| "resulting child do a B<PTRACE_TRACEME>, followed (typically) by an B<exec>"
2193 #| "(3).  Alternatively, the parent may commence trace of an existing process "
2194 #| "using B<PTRACE_ATTACH>."
2195 msgid ""
2196 "A process can initiate a trace by calling B<fork>(2)  and having the "
2197 "resulting child do a B<PTRACE_TRACEME>, followed (typically) by an B<execve>"
2198 "(2).  Alternatively, one process may commence tracing another process using "
2199 "B<PTRACE_ATTACH>."
2200 msgstr ""
2201 "トレースを開始するには、まず親プロセスで B<fork>(2)  を呼び出す。生成された子"
2202 "プロセスで B<PTRACE_TRACEME> を行い、続いて (典型的には)  B<exec>(3)  を行な"
2203 "う。 別の方法としては、 親プロセスが既存のプロセスに対して B<PTRACE_ATTACH> "
2204 "を使用し、トレースを開始する。"
2205
2206 #. type: Plain text
2207 #: build/C/man2/ptrace.2:116
2208 #, fuzzy
2209 #| msgid ""
2210 #| "While being traced, the child will stop each time a signal is delivered, "
2211 #| "even if the signal is being ignored.  (The exception is B<SIGKILL>, which "
2212 #| "has its usual effect.)  The parent will be notified at its next B<wait>"
2213 #| "(2)  and may inspect and modify the child process while it is stopped.  "
2214 #| "The parent then causes the child to continue, optionally ignoring the "
2215 #| "delivered signal (or even delivering a different signal instead)."
2216 msgid ""
2217 "While being traced, the tracee will stop each time a signal is delivered, "
2218 "even if the signal is being ignored.  (An exception is B<SIGKILL>, which has "
2219 "its usual effect.)  The tracer will be notified at its next call to "
2220 "B<waitpid>(2)  (or one of the related \"wait\" system calls); that call will "
2221 "return a I<status> value containing information that indicates the cause of "
2222 "the stop in the tracee.  While the tracee is stopped, the tracer can use "
2223 "various ptrace requests to inspect and modify the tracee.  The tracer then "
2224 "causes the tracee to continue, optionally ignoring the delivered signal (or "
2225 "even delivering a different signal instead)."
2226 msgstr ""
2227 "トレースの実行中、子プロセスはシグナルが配送されるたびに、 たとえそのシグナル"
2228 "が無視すべきものであっても停止する (B<SIGKILL> は例外で、通常どおりの効果をも"
2229 "たらす)。 親プロセスには次の B<wait>(2)  で通知され、停止している間に子プロセ"
2230 "スを調べたり修正したりすることができる。 そして親プロセスは子プロセスの実行を"
2231 "再開させるが、配送された シグナルを無視することもできる (あるいは代わりに別の"
2232 "シグナルを 配送することもできる) 。"
2233
2234 #. type: Plain text
2235 #: build/C/man2/ptrace.2:126
2236 msgid ""
2237 "If the B<PTRACE_O_TRACEEXEC> option is not in effect, all successful calls "
2238 "to B<execve>(2)  by the traced process will cause it to be sent a B<SIGTRAP> "
2239 "signal, giving the parent a chance to gain control before the new program "
2240 "begins execution."
2241 msgstr ""
2242
2243 #. type: Plain text
2244 #: build/C/man2/ptrace.2:130
2245 #, fuzzy
2246 #| msgid ""
2247 #| "When the parent is finished tracing, it can terminate the child with "
2248 #| "B<PTRACE_KILL> or cause it to continue executing in a normal, untraced "
2249 #| "mode via B<PTRACE_DETACH>."
2250 msgid ""
2251 "When the tracer is finished tracing, it can cause the tracee to continue "
2252 "executing in a normal, untraced mode via B<PTRACE_DETACH>."
2253 msgstr ""
2254 "親プロセスがトレースを終了する際には、 B<PTRACE_KILL> を使用して子プロセスを"
2255 "終了させることもできるし、 B<PTRACE_DETACH> を用いて通常のトレースなしのモー"
2256 "ドにして、 実行を継続させることもできる。"
2257
2258 #. type: Plain text
2259 #: build/C/man2/ptrace.2:134
2260 msgid "The value of I<request> determines the action to be performed:"
2261 msgstr "I<request> の値がこのシステムコールの動作を決定する:"
2262
2263 #. type: TP
2264 #: build/C/man2/ptrace.2:134
2265 #, no-wrap
2266 msgid "B<PTRACE_TRACEME>"
2267 msgstr "B<PTRACE_TRACEME>"
2268
2269 #. type: Plain text
2270 #: build/C/man2/ptrace.2:144
2271 msgid ""
2272 "Indicate that this process is to be traced by its parent.  A process "
2273 "probably shouldn't make this request if its parent isn't expecting to trace "
2274 "it.  (I<pid>, I<addr>, and I<data> are ignored.)"
2275 msgstr ""
2276
2277 #. type: Plain text
2278 #: build/C/man2/ptrace.2:157
2279 #, fuzzy
2280 #| msgid ""
2281 #| "The above request is used only by the child process; the rest are used "
2282 #| "only by the parent.  In the following requests, I<pid> specifies the "
2283 #| "child process to be acted on.  For requests other than B<PTRACE_KILL>, "
2284 #| "the child process must be stopped."
2285 msgid ""
2286 "The B<PTRACE_TRACEME> request is used only by the tracee; the remaining "
2287 "requests are used only by the tracer.  In the following requests, I<pid> "
2288 "specifies the thread ID of the tracee to be acted on.  For requests other "
2289 "than B<PTRACE_ATTACH> and B<PTRACE_KILL>, the tracee must be stopped."
2290 msgstr ""
2291 "上記の要求は子プロセスだけが行なうものである。 残りは親プロセスだけが行なうも"
2292 "のである。 以下の要求では、I<pid> で操作の対象となる 子プロセスを指定する。 "
2293 "B<PTRACE_KILL> を除き、要求を行なうためには 子プロセスは停止していなければな"
2294 "らない。"
2295
2296 #. type: TP
2297 #: build/C/man2/ptrace.2:157
2298 #, no-wrap
2299 msgid "B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>"
2300 msgstr "B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>"
2301
2302 #. type: Plain text
2303 #: build/C/man2/ptrace.2:168
2304 #, fuzzy
2305 #| msgid ""
2306 #| "Reads a word at the location I<addr> in the child's memory, returning the "
2307 #| "word as the result of the B<ptrace>()  call.  Linux does not have "
2308 #| "separate text and data address spaces, so the two requests are currently "
2309 #| "equivalent.  (The argument I<data> is ignored.)"
2310 msgid ""
2311 "Read a word at the address I<addr> in the tracee's memory, returning the "
2312 "word as the result of the B<ptrace>()  call.  Linux does not have separate "
2313 "text and data address spaces, so these two requests are currently "
2314 "equivalent.  (I<data> is ignored.)"
2315 msgstr ""
2316 "子プロセスのメモリの I<addr> の位置から 1 ワードを読み出す。読み出したワード"
2317 "は B<ptrace>()  の返り値として返される。 Linux ではテキスト (text) とデータ "
2318 "(data) で 同じアドレス空間を使用するため、この 2 つの要求は現在のところ 同じ"
2319 "ものである。 (引き数 I<data> は無視される。)"
2320
2321 #. type: TP
2322 #: build/C/man2/ptrace.2:168
2323 #, no-wrap
2324 msgid "B<PTRACE_PEEKUSER>"
2325 msgstr "B<PTRACE_PEEKUSER>"
2326
2327 #.  PTRACE_PEEKUSR in kernel source, but glibc uses PTRACE_PEEKUSER,
2328 #.  and that is the name that seems common on other systems.
2329 #. type: Plain text
2330 #: build/C/man2/ptrace.2:186
2331 #, fuzzy
2332 #| msgid ""
2333 #| "Reads a word at offset I<addr> in the child's USER area, which holds the "
2334 #| "registers and other information about the process (see I<E<lt>sys/user."
2335 #| "hE<gt>>).  The word is returned as the result of the B<ptrace>()  call.  "
2336 #| "Typically the offset must be word-aligned, though this might vary by "
2337 #| "architecture.  See NOTES.  (I<data> is ignored.)"
2338 msgid ""
2339 "Read a word at offset I<addr> in the tracee's USER area, which holds the "
2340 "registers and other information about the process (see I<E<lt>sys/user."
2341 "hE<gt>>).  The word is returned as the result of the B<ptrace>()  call.  "
2342 "Typically, the offset must be word-aligned, though this might vary by "
2343 "architecture.  See NOTES.  (I<data> is ignored.)"
2344 msgstr ""
2345 "子プロセスの USER 領域のオフセット I<addr> の位置から 1 ワードを読み込む。"
2346 "USER 領域にはそのプロセスの レジスタ (registers) などの情報が保持されている "
2347 "(I<E<lt>sys/user.hE<gt>> を参照)。読み込んだワードは B<ptrace>()  コールの結"
2348 "果として返される。 たいていはオフセットはワード境界になければならないが、 "
2349 "アーキテクチャによってはその必要はない。 「注意」の節を参照。 (I<data> は無視"
2350 "される。 )"
2351
2352 #. type: TP
2353 #: build/C/man2/ptrace.2:186
2354 #, no-wrap
2355 msgid "B<PTRACE_POKETEXT>, B<PTRACE_POKEDATA>"
2356 msgstr "B<PTRACE_POKETEXT>, B<PTRACE_POKEDATA>"
2357
2358 #. type: Plain text
2359 #: build/C/man2/ptrace.2:198
2360 #, fuzzy
2361 #| msgid ""
2362 #| "Copies the word I<data> to location I<addr> in the child's memory.  As "
2363 #| "above, the two requests are currently equivalent."
2364 msgid ""
2365 "Copy the word I<data> to the address I<addr> in the tracee's memory.  As for "
2366 "B<PTRACE_PEEKTEXT> and B<PTRACE_PEEKDATA>, these two requests are currently "
2367 "equivalent."
2368 msgstr ""
2369 "ワード I<data> を子プロセスのメモリの I<addr> の位置へコピーする。上と同様"
2370 "に、現在のところ二つの 要求は同じものである。"
2371
2372 #. type: TP
2373 #: build/C/man2/ptrace.2:198
2374 #, no-wrap
2375 msgid "B<PTRACE_POKEUSER>"
2376 msgstr "B<PTRACE_POKEUSER>"
2377
2378 #.  PTRACE_POKEUSR in kernel source, but glibc uses PTRACE_POKEUSER,
2379 #.  and that is the name that seems common on other systems.
2380 #.  FIXME In the preceding sentence, which modifications are disallowed,
2381 #.  and when they are disallowed, how does userspace discover that fact?
2382 #. type: Plain text
2383 #: build/C/man2/ptrace.2:214
2384 #, fuzzy
2385 #| msgid ""
2386 #| "Copies the word I<data> to offset I<addr> in the child's USER area.  As "
2387 #| "above, the offset must typically be word-aligned.  In order to maintain "
2388 #| "the integrity of the kernel, some modifications to the USER area are "
2389 #| "disallowed."
2390 msgid ""
2391 "Copy the word I<data> to offset I<addr> in the tracee's USER area.  As for "
2392 "B<PTRACE_PEEKUSER>, the offset must typically be word-aligned.  In order to "
2393 "maintain the integrity of the kernel, some modifications to the USER area "
2394 "are disallowed."
2395 msgstr ""
2396 "ワード I<data> を子プロセスの USER 領域のオフセット I<addr> の位置にコピーす"
2397 "る。 上と同様に、通常、オフセットはワード境界になければならない。 カーネルの"
2398 "完全性 (integrity) を維持するため、 変更内容によっては USER 領域の変更は禁止"
2399 "されている。"
2400
2401 #. type: TP
2402 #: build/C/man2/ptrace.2:214
2403 #, no-wrap
2404 msgid "B<PTRACE_GETREGS>, B<PTRACE_GETFPREGS>"
2405 msgstr "B<PTRACE_GETREGS>, B<PTRACE_GETFPREGS>"
2406
2407 #. type: Plain text
2408 #: build/C/man2/ptrace.2:225
2409 #, fuzzy
2410 #| msgid ""
2411 #| "Copies the child's general purpose or floating-point registers, "
2412 #| "respectively, to location I<data> in the parent.  See I<E<lt>sys/user."
2413 #| "hE<gt>> for information on the format of this data.  (I<addr> is ignored.)"
2414 msgid ""
2415 "Copy the tracee's general-purpose or floating-point registers, respectively, "
2416 "to the address I<data> in the tracer.  See I<E<lt>sys/user.hE<gt>> for "
2417 "information on the format of this data.  (I<addr> is ignored.)"
2418 msgstr ""
2419 "それぞれ、子プロセスの汎用レジスタ、浮動小数点レジスタを親プロセスの I<data> "
2420 "の位置にコピーする。この data の書式に関しては I<E<lt>sys/user.hE<gt>> を参照"
2421 "すること。(I<addr> は無視される。)"
2422
2423 #. type: TP
2424 #: build/C/man2/ptrace.2:225
2425 #, no-wrap
2426 msgid "B<PTRACE_GETSIGINFO> (since Linux 2.3.99-pre6)"
2427 msgstr "B<PTRACE_GETSIGINFO> (Linux 2.3.99-pre6 以降)"
2428
2429 #. type: Plain text
2430 #: build/C/man2/ptrace.2:237
2431 #, fuzzy
2432 #| msgid ""
2433 #| "Retrieve information about the signal that caused the stop.  Copies a "
2434 #| "I<siginfo_t> structure (see B<sigaction>(2))  from the child to location "
2435 #| "I<data> in the parent.  (I<addr> is ignored.)"
2436 msgid ""
2437 "Retrieve information about the signal that caused the stop.  Copy a "
2438 "I<siginfo_t> structure (see B<sigaction>(2))  from the tracee to the address "
2439 "I<data> in the tracer.  (I<addr> is ignored.)"
2440 msgstr ""
2441 "停止の原因となったシグナルに関する情報を取得する。 I<siginfo_t> 構造体 "
2442 "(B<sigaction>(2)  参照) を子プロセスから親プロセスの I<data> の位置にコピーす"
2443 "る。 (I<addr> は無視される。)"
2444
2445 #. type: TP
2446 #: build/C/man2/ptrace.2:237
2447 #, no-wrap
2448 msgid "B<PTRACE_SETREGS>, B<PTRACE_SETFPREGS>"
2449 msgstr "B<PTRACE_SETREGS>, B<PTRACE_SETFPREGS>"
2450
2451 #.  FIXME In the preceding sentence, which modifications are disallowed,
2452 #.  and when they are disallowed, how does userspace discover that fact?
2453 #. type: Plain text
2454 #: build/C/man2/ptrace.2:250
2455 #, fuzzy
2456 #| msgid ""
2457 #| "Copies the child's general purpose or floating-point registers, "
2458 #| "respectively, from location I<data> in the parent.  As for "
2459 #| "B<PTRACE_POKEUSER>, some general purpose register modifications may be "
2460 #| "disallowed.  (I<addr> is ignored.)"
2461 msgid ""
2462 "Copy the tracee's general-purpose or floating-point registers, respectively, "
2463 "from the address I<data> in the tracer.  As for B<PTRACE_POKEUSER>, some "
2464 "general-purpose register modifications may be disallowed.  (I<addr> is "
2465 "ignored.)"
2466 msgstr ""
2467 "それぞれ、子プロセスの汎用レジスタ、浮動小数点レジスタに 親プロセスの "
2468 "I<date> の位置からコピーする。 B<PTRACE_POKEUSER> と同様に、汎用レジスタに"
2469 "よっては 変更が禁止されている場合がある。 (I<addr> は無視される。)"
2470
2471 #. type: TP
2472 #: build/C/man2/ptrace.2:250
2473 #, no-wrap
2474 msgid "B<PTRACE_SETSIGINFO> (since Linux 2.3.99-pre6)"
2475 msgstr "B<PTRACE_SETSIGINFO> (Linux 2.3.99-pre6 以降)"
2476
2477 #. type: Plain text
2478 #: build/C/man2/ptrace.2:266
2479 #, fuzzy
2480 #| msgid ""
2481 #| "Set signal information.  Copies a I<siginfo_t> structure from location "
2482 #| "I<data> in the parent to the child.  This will only affect signals that "
2483 #| "would normally be delivered to the child and were caught by the tracer.  "
2484 #| "It may be difficult to tell these normal signals from synthetic signals "
2485 #| "generated by B<ptrace>()  itself.  (I<addr> is ignored.)"
2486 msgid ""
2487 "Set signal information: copy a I<siginfo_t> structure from the address "
2488 "I<data> in the tracer to the tracee.  This will affect only signals that "
2489 "would normally be delivered to the tracee and were caught by the tracer.  It "
2490 "may be difficult to tell these normal signals from synthetic signals "
2491 "generated by B<ptrace>()  itself.  (I<addr> is ignored.)"
2492 msgstr ""
2493 "シグナル情報を設定する。 I<siginfo_t> 構造体を親プロセスのデータ I<data> の位"
2494 "置から 子プロセスにコピーする。 この処理を行うことができるのは、子プロセスに"
2495 "通常は配送されるはずで トレーサに捕捉されたシグナルについてだけである。 これ"
2496 "らの通常のシグナルと B<ptrace>()  自身が発生するシグナルを見分けるのは難しい"
2497 "かもしれない。 (I<addr> は無視される。)"
2498
2499 #. type: TP
2500 #: build/C/man2/ptrace.2:266
2501 #, no-wrap
2502 msgid "B<PTRACE_SETOPTIONS> (since Linux 2.4.6; see BUGS for caveats)"
2503 msgstr "B<PTRACE_SETOPTIONS> (Linux 2.4.6 以降; バグの章にある警告も参照)"
2504
2505 #. type: Plain text
2506 #: build/C/man2/ptrace.2:275
2507 #, fuzzy
2508 #| msgid ""
2509 #| "Sets ptrace options from I<data> in the parent.  (I<addr> is ignored.)  "
2510 #| "I<data> is interpreted as a bit mask of options, which are specified by "
2511 #| "the following flags:"
2512 msgid ""
2513 "Set ptrace options from I<data>.  (I<addr> is ignored.)  I<data> is "
2514 "interpreted as a bit mask of options, which are specified by the following "
2515 "flags:"
2516 msgstr ""
2517 "親プロセスの I<data> に基づいて ptrace のオプションを設定する (I<addr> は無視"
2518 "される)。 I<data> はオプションのビットマスクとして解釈され、 オプションには以"
2519 "下のフラグを指定できる:"
2520
2521 #. type: TP
2522 #: build/C/man2/ptrace.2:276
2523 #, no-wrap
2524 msgid "B<PTRACE_O_TRACESYSGOOD> (since Linux 2.4.6)"
2525 msgstr "B<PTRACE_O_TRACESYSGOOD> (Linux 2.4.6 以降)"
2526
2527 #. type: Plain text
2528 #: build/C/man2/ptrace.2:285
2529 #, fuzzy
2530 #| msgid ""
2531 #| "When delivering syscall traps, set bit 7 in the signal number (i.e., "
2532 #| "deliver I<SIGTRAP | 0x80>).  This makes it easy for the tracer to tell "
2533 #| "the difference between normal traps and those caused by a syscall.  "
2534 #| "(B<PTRACE_O_TRACESYSGOOD> may not work on all architectures.)"
2535 msgid ""
2536 "When delivering system call traps, set bit 7 in the signal number (i.e., "
2537 "deliver I<SIGTRAP|0x80>).  This makes it easy for the tracer to distinguish "
2538 "normal traps from those caused by a system call.  (B<PTRACE_O_TRACESYSGOOD> "
2539 "may not work on all architectures.)"
2540 msgstr ""
2541 "システムコールのトラップが配送されたときに、シグナル番号のビット 7 を設定す"
2542 "る (すなわち、I<SIGTRAP | 0x80> を配送する)。 これにより、トレーサが通常のト"
2543 "ラップとシステムコールによるトラップを 区別しやすくなる。 "
2544 "(B<PTRACE_O_TRACESYSGOOD> はどのアーキテクチャでも動作しない可能性がある。)"
2545
2546 #. type: TP
2547 #: build/C/man2/ptrace.2:285
2548 #, no-wrap
2549 msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
2550 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
2551
2552 #. type: Plain text
2553 #: build/C/man2/ptrace.2:297
2554 #, fuzzy
2555 #| msgid ""
2556 #| "Stop the child at the next B<fork>(2)  call with I<SIGTRAP | "
2557 #| "PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
2558 #| "newly forked process, which will start with a B<SIGSTOP>.  The PID for "
2559 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
2560 msgid ""
2561 "Stop the tracee at the next B<fork>(2)  and automatically start tracing the "
2562 "newly forked process, which will start with a B<SIGSTOP>.  A B<waitpid>(2)  "
2563 "by the tracer will return a I<status> value such that"
2564 msgstr ""
2565 "次の B<fork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ "
2566 "8> で 子プロセスの動作を停止させ、 新たに fork されたプロセスのトレースを自動"
2567 "的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
2568 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
2569
2570 #. type: Plain text
2571 #: build/C/man2/ptrace.2:300
2572 #, no-wrap
2573 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_FORKE<lt>E<lt>8))\n"
2574 msgstr ""
2575
2576 #. type: Plain text
2577 #: build/C/man2/ptrace.2:304 build/C/man2/ptrace.2:323
2578 #: build/C/man2/ptrace.2:342
2579 msgid "The PID of the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
2580 msgstr ""
2581
2582 #. type: TP
2583 #: build/C/man2/ptrace.2:304
2584 #, no-wrap
2585 msgid "B<PTRACE_O_TRACEVFORK> (since Linux 2.5.46)"
2586 msgstr "B<PTRACE_O_TRACEVFORK> (Linux 2.5.46 以降)"
2587
2588 #. type: Plain text
2589 #: build/C/man2/ptrace.2:316
2590 #, fuzzy
2591 #| msgid ""
2592 #| "Stop the child at the next B<vfork>(2)  call with I<SIGTRAP | "
2593 #| "PTRACE_EVENT_VFORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
2594 #| "newly vforked process, which will start with a B<SIGSTOP>.  The PID for "
2595 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
2596 msgid ""
2597 "Stop the tracee at the next B<vfork>(2)  and automatically start tracing the "
2598 "newly vforked process, which will start with a B<SIGSTOP>.  A B<waitpid>(2)  "
2599 "by the tracer will return a I<status> value such that"
2600 msgstr ""
2601 "次の B<vfork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_VFORK\\ E<lt>E<lt>\\ "
2602 "8> で 子プロセスの動作を停止させ、 新たに vfork されたプロセスのトレースを自"
2603 "動的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
2604 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
2605
2606 #. type: Plain text
2607 #: build/C/man2/ptrace.2:319
2608 #, no-wrap
2609 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORKE<lt>E<lt>8))\n"
2610 msgstr ""
2611
2612 #. type: TP
2613 #: build/C/man2/ptrace.2:323
2614 #, no-wrap
2615 msgid "B<PTRACE_O_TRACECLONE> (since Linux 2.5.46)"
2616 msgstr "B<PTRACE_O_TRACECLONE> (Linux 2.5.46 以降)"
2617
2618 #. type: Plain text
2619 #: build/C/man2/ptrace.2:335
2620 #, fuzzy
2621 #| msgid ""
2622 #| "Stop the child at the next B<fork>(2)  call with I<SIGTRAP | "
2623 #| "PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
2624 #| "newly forked process, which will start with a B<SIGSTOP>.  The PID for "
2625 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
2626 msgid ""
2627 "Stop the tracee at the next B<clone>(2)  and automatically start tracing the "
2628 "newly cloned process, which will start with a B<SIGSTOP>.  A B<waitpid>(2)  "
2629 "by the tracer will return a I<status> value such that"
2630 msgstr ""
2631 "次の B<fork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ "
2632 "8> で 子プロセスの動作を停止させ、 新たに fork されたプロセスのトレースを自動"
2633 "的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
2634 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
2635
2636 #. type: Plain text
2637 #: build/C/man2/ptrace.2:338
2638 #, no-wrap
2639 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_CLONEE<lt>E<lt>8))\n"
2640 msgstr ""
2641
2642 #. type: Plain text
2643 #: build/C/man2/ptrace.2:363
2644 #, fuzzy
2645 #| msgid ""
2646 #| "Stop the child at the next B<clone>(2)  call with I<SIGTRAP | "
2647 #| "PTRACE_EVENT_CLONE\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
2648 #| "newly cloned process, which will start with a B<SIGSTOP>.  The PID for "
2649 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>.  This option "
2650 #| "may not catch B<clone>(2)  calls in all cases.  If the child calls "
2651 #| "B<clone>(2)  with the B<CLONE_VFORK> flag, B<PTRACE_EVENT_VFORK> will be "
2652 #| "delivered instead if B<PTRACE_O_TRACEVFORK> is set; otherwise if the "
2653 #| "child calls B<clone>(2)  with the exit signal set to B<SIGCHLD>, "
2654 #| "B<PTRACE_EVENT_FORK> will be delivered if B<PTRACE_O_TRACEFORK> is set."
2655 msgid ""
2656 "This option may not catch B<clone>(2)  calls in all cases.  If the tracee "
2657 "calls B<clone>(2)  with the B<CLONE_VFORK> flag, B<PTRACE_EVENT_VFORK> will "
2658 "be delivered instead if B<PTRACE_O_TRACEVFORK> is set; otherwise if the "
2659 "tracee calls B<clone>(2)  with the exit signal set to B<SIGCHLD>, "
2660 "B<PTRACE_EVENT_FORK> will be delivered if B<PTRACE_O_TRACEFORK> is set."
2661 msgstr ""
2662 "次の B<clone>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_CLONE\\ E<lt>E<lt> "
2663 "\\8> で 子プロセスの動作を停止させ、 新たに clone で作成されたプロセスのト"
2664 "レースを自動的に開始し、 B<SIGSTOP> でプロセスの実行を開始する。 新しいプロセ"
2665 "スの PID は B<PTRACE_GETEVENTMSG> で取得できる。 このオプションで全ての "
2666 "B<clone>(2)  コールを捕まえられるわけではない。 子プロセスが B<CLONE_VFORK> "
2667 "フラグ付きで B<clone>(2)  を呼び出した場合、 B<PTRACE_O_TRACEVFORK> が設定さ"
2668 "れていれば代わりに B<PTRACE_EVENT_VFORK> が配送される。 また、子プロセスが終"
2669 "了シグナルを B<SIGCHLD> に設定して B<clone>(2)  を呼び出した場合は、 "
2670 "B<PTRACE_O_TRACEFORK> が設定されていれば B<PTRACE_EVENT_FORK> が配送される。"
2671
2672 #. type: TP
2673 #: build/C/man2/ptrace.2:363
2674 #, no-wrap
2675 msgid "B<PTRACE_O_TRACEEXEC> (since Linux 2.5.46)"
2676 msgstr "B<PTRACE_O_TRACEEXEC> (Linux 2.5.46 以降)"
2677
2678 #. type: Plain text
2679 #: build/C/man2/ptrace.2:372
2680 msgid ""
2681 "Stop the tracee at the next B<execve>(2).  A B<waitpid>(2)  by the tracer "
2682 "will return a I<status> value such that"
2683 msgstr ""
2684
2685 #. type: Plain text
2686 #: build/C/man2/ptrace.2:375
2687 #, no-wrap
2688 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXECE<lt>E<lt>8))\n"
2689 msgstr ""
2690
2691 #. type: Plain text
2692 #: build/C/man2/ptrace.2:381
2693 msgid ""
2694 "If the execing thread is not a thread group leader, the thread ID is reset "
2695 "to thread group leader's ID before this stop.  Since Linux 3.0, the former "
2696 "thread ID can be retrieved with B<PTRACE_GETEVENTMSG>."
2697 msgstr ""
2698
2699 #. type: TP
2700 #: build/C/man2/ptrace.2:381
2701 #, no-wrap
2702 msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
2703 msgstr "B<PTRACE_O_TRACEVFORKDONE> (Linux 2.5.60 以降)"
2704
2705 #. type: Plain text
2706 #: build/C/man2/ptrace.2:390
2707 msgid ""
2708 "Stop the tracee at the completion of the next B<vfork>(2).  A B<waitpid>(2)  "
2709 "by the tracer will return a I<status> value such that"
2710 msgstr ""
2711
2712 #. type: Plain text
2713 #: build/C/man2/ptrace.2:393
2714 #, no-wrap
2715 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORK_DONEE<lt>E<lt>8))\n"
2716 msgstr ""
2717
2718 #. type: Plain text
2719 #: build/C/man2/ptrace.2:397
2720 msgid ""
2721 "The PID of the new process can (since Linux 2.6.18) be retrieved with "
2722 "B<PTRACE_GETEVENTMSG>."
2723 msgstr ""
2724
2725 #. type: TP
2726 #: build/C/man2/ptrace.2:397
2727 #, no-wrap
2728 msgid "B<PTRACE_O_TRACEEXIT> (since Linux 2.5.60)"
2729 msgstr "B<PTRACE_O_TRACEEXIT> (Linux 2.5.60 以降)"
2730
2731 #. type: Plain text
2732 #: build/C/man2/ptrace.2:405
2733 msgid ""
2734 "Stop the tracee at exit.  A B<waitpid>(2)  by the tracer will return a "
2735 "I<status> value such that"
2736 msgstr ""
2737
2738 #. type: Plain text
2739 #: build/C/man2/ptrace.2:408
2740 #, no-wrap
2741 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXITE<lt>E<lt>8))\n"
2742 msgstr ""
2743
2744 #. type: Plain text
2745 #: build/C/man2/ptrace.2:412
2746 msgid "The tracee's exit status can be retrieved with B<PTRACE_GETEVENTMSG>."
2747 msgstr ""
2748
2749 #. type: Plain text
2750 #: build/C/man2/ptrace.2:420
2751 #, fuzzy
2752 #| msgid ""
2753 #| "Stop the child at exit with I<SIGTRAP | PTRACE_EVENT_EXIT\\ E<lt>E<lt>\\ "
2754 #| "8>.  The child's exit status can be retrieved with "
2755 #| "B<PTRACE_GETEVENTMSG>.  This stop will be done early during process exit "
2756 #| "when registers are still available, allowing the tracer to see where the "
2757 #| "exit occurred, whereas the normal exit notification is done after the "
2758 #| "process is finished exiting.  Even though context is available, the "
2759 #| "tracer cannot prevent the exit from happening at this point."
2760 msgid ""
2761 "The tracee is stopped early during process exit, when registers are still "
2762 "available, allowing the tracer to see where the exit occurred, whereas the "
2763 "normal exit notification is done after the process is finished exiting.  "
2764 "Even though context is available, the tracer cannot prevent the exit from "
2765 "happening at this point."
2766 msgstr ""
2767 "終了 (exit) 時に I<SIGTRAP | PTRACE_EVENT_EXIT\\ E<lt>E<lt>\\ 8> で子プロセス"
2768 "の動作を停止させる。子プロセスの終了ステータスは B<PTRACE_GETEVENTMSG> で取得"
2769 "できる。 この停止はレジスタがまだ参照可能であるプロセス終了処理の初期に行わ"
2770 "れ、 トレーサはどこで終了が発生したかを知ることができる。 通常の終了通知 "
2771 "(exit notification) はプロセスの終了処理が完了した後に 行われる。コンテキスト"
2772 "を参照することはできるにも関わらず、 トレーサはこの時点から終了を止めることは"
2773 "できない。"
2774
2775 #. type: TP
2776 #: build/C/man2/ptrace.2:421
2777 #, no-wrap
2778 msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
2779 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
2780
2781 #. type: Plain text
2782 #: build/C/man2/ptrace.2:441
2783 #, fuzzy
2784 #| msgid ""
2785 #| "Retrieve a message (as an I<unsigned long>)  about the ptrace event that "
2786 #| "just happened, placing it in the location I<data> in the parent.  For "
2787 #| "B<PTRACE_EVENT_EXIT> this is the child's exit status.  For "
2788 #| "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK> and B<PTRACE_EVENT_CLONE> "
2789 #| "this is the PID of the new process.  Since Linux 2.6.18, the PID of the "
2790 #| "new process is also available for B<PTRACE_EVENT_VFORK_DONE>.  (I<addr> "
2791 #| "is ignored.)"
2792 msgid ""
2793 "Retrieve a message (as an I<unsigned long>)  about the ptrace event that "
2794 "just happened, placing it at the address I<data> in the tracer.  For "
2795 "B<PTRACE_EVENT_EXIT>, this is the tracee's exit status.  For "
2796 "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK>, B<PTRACE_EVENT_VFORK_DONE>, and "
2797 "B<PTRACE_EVENT_CLONE>, this is the PID of the new process.  (I<addr> is "
2798 "ignored.)"
2799 msgstr ""
2800 "発生したばかりの ptrace イベントに関するメッセージを (I<unsigned long> 型で) "
2801 "取得する。 取得したメッセージは親プロセスの I<data> の位置に格納される。 得ら"
2802 "れる内容は、 B<PTRACE_EVENT_EXIT> の場合は子プロセスの終了ステータスであり、 "
2803 "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK>, B<PTRACE_EVENT_CLONE> の場合は新"
2804 "しいプロセスの PID である。 Linux 2.6.18 以降では、新しいプロセスの PID は "
2805 "B<PTRACE_EVENT_VFORK_DONE> で入手できる。 (I<addr> は無視される。)"
2806
2807 #. type: TP
2808 #: build/C/man2/ptrace.2:441
2809 #, no-wrap
2810 msgid "B<PTRACE_CONT>"
2811 msgstr "B<PTRACE_CONT>"
2812
2813 #. type: Plain text
2814 #: build/C/man2/ptrace.2:453
2815 #, fuzzy
2816 #| msgid ""
2817 #| "Restarts the stopped child process.  If I<data> is nonzero and not "
2818 #| "B<SIGSTOP>, it is interpreted as a signal to be delivered to the child; "
2819 #| "otherwise, no signal is delivered.  Thus, for example, the parent can "
2820 #| "control whether a signal sent to the child is delivered or not.  (I<addr> "
2821 #| "is ignored.)"
2822 msgid ""
2823 "Restart the stopped tracee process.  If I<data> is nonzero, it is "
2824 "interpreted as the number of a signal to be delivered to the tracee; "
2825 "otherwise, no signal is delivered.  Thus, for example, the tracer can "
2826 "control whether a signal sent to the tracee is delivered or not.  (I<addr> "
2827 "is ignored.)"
2828 msgstr ""
2829 "停止した子プロセスの実行を再開させる。 I<data> がゼロでなく、 B<SIGSTOP> でも"
2830 "なければ、 子プロセスに配送されるシグナルと解釈される。 ゼロや B<SIGSTOP> の"
2831 "場合はシグナルは配送されない。 これを使うと、例えば、親プロセスは 子プロセス"
2832 "に送られたシグナルを実際に配送するかどうかを 制御することができる。(I<addr> "
2833 "は無視される。)"
2834
2835 #. type: TP
2836 #: build/C/man2/ptrace.2:453
2837 #, no-wrap
2838 msgid "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>"
2839 msgstr "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>"
2840
2841 #. type: Plain text
2842 #: build/C/man2/ptrace.2:477
2843 #, fuzzy
2844 #| msgid ""
2845 #| "Restarts the stopped child as for B<PTRACE_CONT>, but arranges for the "
2846 #| "child to be stopped at the next entry to or exit from a system call, or "
2847 #| "after execution of a single instruction, respectively.  (The child will "
2848 #| "also, as usual, be stopped upon receipt of a signal.)  From the parent's "
2849 #| "perspective, the child will appear to have been stopped by receipt of a "
2850 #| "B<SIGTRAP>.  So, for B<PTRACE_SYSCALL>, for example, the idea is to "
2851 #| "inspect the arguments to the system call at the first stop, then do "
2852 #| "another B<PTRACE_SYSCALL> and inspect the return value of the system call "
2853 #| "at the second stop.  The I<data> argument is treated as for "
2854 #| "B<PTRACE_CONT>.  (I<addr> is ignored.)"
2855 msgid ""
2856 "Restart the stopped tracee as for B<PTRACE_CONT>, but arrange for the tracee "
2857 "to be stopped at the next entry to or exit from a system call, or after "
2858 "execution of a single instruction, respectively.  (The tracee will also, as "
2859 "usual, be stopped upon receipt of a signal.)  From the tracer's perspective, "
2860 "the tracee will appear to have been stopped by receipt of a B<SIGTRAP>.  So, "
2861 "for B<PTRACE_SYSCALL>, for example, the idea is to inspect the arguments to "
2862 "the system call at the first stop, then do another B<PTRACE_SYSCALL> and "
2863 "inspect the return value of the system call at the second stop.  The I<data> "
2864 "argument is treated as for B<PTRACE_CONT>.  (I<addr> is ignored.)"
2865 msgstr ""
2866 "B<PTRACE_CONT> と同様に停止した子プロセスを再開する。ただし、 "
2867 "B<PTRACE_SYSCALL> の場合は子プロセスが 次にシステムコールに入るかシステムコー"
2868 "ルから抜けるかする時に、 B<PTRACE_SINGLESTEP> の場合は 1 命令 (instruction) "
2869 "実行した後に停止させる (通常どおり、子プロセスはシグナルを受け取った場合にも"
2870 "停止する)。 親プロセスから見ると、子プロセスは B<SIGTRAP> を受信して停止した"
2871 "ように見える。そのため、例えば B<PTRACE_SYSCALL> を使うと、1回目の停止で引き"
2872 "数を調べて B<PTRACE_SYSCALL> を実行し、 2回目の停止でシステムコールの返り値を"
2873 "調べる、 というようなことができる。 引き数 I<data> は B<PTRACE_CONT> の場合と"
2874 "同じ様に解釈される。 (I<addr> は無視される。)"
2875
2876 #. type: TP
2877 #: build/C/man2/ptrace.2:477
2878 #, no-wrap
2879 msgid "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (since Linux 2.6.14)"
2880 msgstr "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (Linux 2.6.14 以降)"
2881
2882 #. type: Plain text
2883 #: build/C/man2/ptrace.2:495
2884 #, fuzzy
2885 #| msgid ""
2886 #| "For B<PTRACE_SYSEMU>, continue and stop on entry to the next syscall, "
2887 #| "which will not be executed.  For B<PTRACE_SYSEMU_SINGLESTEP>, do the same "
2888 #| "but also singlestep if not a syscall.  This call is used by programs like "
2889 #| "User Mode Linux that want to emulate all the child's system calls.  The "
2890 #| "I<data> argument is treated as for B<PTRACE_CONT>.  (I<addr> is ignored; "
2891 #| "not supported on all architectures.)"
2892 msgid ""
2893 "For B<PTRACE_SYSEMU>, continue and stop on entry to the next system call, "
2894 "which will not be executed.  For B<PTRACE_SYSEMU_SINGLESTEP>, do the same "
2895 "but also singlestep if not a system call.  This call is used by programs "
2896 "like User Mode Linux that want to emulate all the tracee's system calls.  "
2897 "The I<data> argument is treated as for B<PTRACE_CONT>.  (I<addr> is ignored; "
2898 "not supported on all architectures.)"
2899 msgstr ""
2900 "B<PTRACE_SYSEMU> は、実行を再開し、次のシステムコールに入る時に停止させる。 "
2901 "システムコールは実行されない。 B<PTRACE_SYSEMU_SINGLESTEP> も同様だが、システ"
2902 "ムコールでない場合には 1 命令 (singlestep) だけ実行した時点でも停止させる。 "
2903 "このコールは User Mode Linux のように子プロセスのシステムコールを全て エミュ"
2904 "レートしようとするプログラムで使用される。 引き数 I<data> は B<PTRACE_CONT> "
2905 "の場合と同じ様に解釈される。 (I<addr> は無視される。 全てのアーキテクチャでサ"
2906 "ポートされているわけではない。)"
2907
2908 #. type: TP
2909 #: build/C/man2/ptrace.2:495
2910 #, no-wrap
2911 msgid "B<PTRACE_KILL>"
2912 msgstr "B<PTRACE_KILL>"
2913
2914 #. type: Plain text
2915 #: build/C/man2/ptrace.2:504
2916 #, fuzzy
2917 #| msgid ""
2918 #| "Sends the child a B<SIGKILL> to terminate it.  (I<addr> and I<data> are "
2919 #| "ignored.)"
2920 msgid ""
2921 "Send the tracee a B<SIGKILL> to terminate it.  (I<addr> and I<data> are "
2922 "ignored.)"
2923 msgstr ""
2924 "子プロセスに B<SIGKILL> を送り終了させる。(I<addr> と I<data> は無視される。)"
2925
2926 #.  [Note from Denys Vlasenko:
2927 #.      deprecation suggested by Oleg Nesterov. He prefers to deprecate it
2928 #.      instead of describing (and needing to support) PTRACE_KILL's quirks.]
2929 #. type: Plain text
2930 #: build/C/man2/ptrace.2:523
2931 msgid ""
2932 "I<This operation is deprecated; do not use it!> Instead, send a B<SIGKILL> "
2933 "directly using B<kill>(2)  or B<tgkill>(2).  The problem with B<PTRACE_KILL> "
2934 "is that it requires the tracee to be in signal-delivery-stop, otherwise it "
2935 "may not work (i.e., may complete successfully but won't kill the tracee).  "
2936 "By contrast, sending a B<SIGKILL> directly has no such limitation."
2937 msgstr ""
2938
2939 #. type: TP
2940 #: build/C/man2/ptrace.2:523
2941 #, no-wrap
2942 msgid "B<PTRACE_ATTACH>"
2943 msgstr "B<PTRACE_ATTACH>"
2944
2945 #.  No longer true (removed by Denys Vlasenko, 2011, who remarks:
2946 #.         "I think it isn't true in non-ancient 2.4 and in 2.6/3.x.
2947 #.          Basically, it's not true for any Linux in practical use.
2948 #.  ; the behavior of the tracee is as if it had done a
2949 #.  .BR PTRACE_TRACEME .
2950 #.  The calling process actually becomes the parent of the tracee
2951 #.  process for most purposes (e.g., it will receive
2952 #.  notification of tracee events and appears in
2953 #.  .BR ps (1)
2954 #.  output as the tracee's parent), but a
2955 #.  .BR getppid (2)
2956 #.  by the tracee will still return the PID of the original parent.
2957 #. type: Plain text
2958 #: build/C/man2/ptrace.2:551
2959 msgid ""
2960 "Attach to the process specified in I<pid>, making it a tracee of the calling "
2961 "process.  The tracee is sent a B<SIGSTOP>, but will not necessarily have "
2962 "stopped by the completion of this call; use B<waitpid>(2)  to wait for the "
2963 "tracee to stop.  See the \"Attaching and detaching\" subsection for "
2964 "additional information.  (I<addr> and I<data> are ignored.)"
2965 msgstr ""
2966
2967 #. type: TP
2968 #: build/C/man2/ptrace.2:551
2969 #, no-wrap
2970 msgid "B<PTRACE_DETACH>"
2971 msgstr "B<PTRACE_DETACH>"
2972
2973 #. type: Plain text
2974 #: build/C/man2/ptrace.2:560
2975 #, fuzzy
2976 #| msgid ""
2977 #| "Restarts the stopped child as for B<PTRACE_CONT>, but first detaches from "
2978 #| "the process, undoing the reparenting effect of B<PTRACE_ATTACH>, and the "
2979 #| "effects of B<PTRACE_TRACEME>.  Although perhaps not intended, under Linux "
2980 #| "a traced child can be detached in this way regardless of which method was "
2981 #| "used to initiate tracing.  (I<addr> is ignored.)"
2982 msgid ""
2983 "Restart the stopped tracee as for B<PTRACE_CONT>, but first detach from it.  "
2984 "Under Linux, a tracee can be detached in this way regardless of which method "
2985 "was used to initiate tracing.  (I<addr> is ignored.)"
2986 msgstr ""
2987 "B<PTRACE_CONT> と同様に停止した子プロセスを再開する。ただし まずそのプロセス"
2988 "からの分離 (detach) を行い、 B<PTRACE_ATTACH> での親の切り換えによる効果と "
2989 "B<PTRACE_TRACEME> の効果を取り消す。意図したものではないだろうが、 Linux で"
2990 "は、トレースされている子プロセスはどのような方法でトレースを 開始されたとして"
2991 "も、この方法で分離 (detach) することができる。 (I<addr> は無視される。)"
2992
2993 #. type: SS
2994 #: build/C/man2/ptrace.2:560
2995 #, no-wrap
2996 msgid "Death under ptrace"
2997 msgstr ""
2998
2999 #. type: Plain text
3000 #: build/C/man2/ptrace.2:569
3001 msgid ""
3002 "When a (possibly multithreaded) process receives a killing signal (one whose "
3003 "disposition is set to B<SIG_DFL> and whose default action is to kill the "
3004 "process), all threads exit.  Tracees report their death to their tracer(s).  "
3005 "Notification of this event is delivered via B<waitpid>(2)."
3006 msgstr ""
3007
3008 #. type: Plain text
3009 #: build/C/man2/ptrace.2:578
3010 msgid ""
3011 "Note that the killing signal will first cause signal-delivery-stop (on one "
3012 "tracee only), and only after it is injected by the tracer (or after it was "
3013 "dispatched to a thread which isn't traced), will death from the signal "
3014 "happen on I<all> tracees within a multithreaded process.  (The term \"signal-"
3015 "delivery-stop\" is explained below.)"
3016 msgstr ""
3017
3018 #. type: Plain text
3019 #: build/C/man2/ptrace.2:592
3020 msgid ""
3021 "B<SIGKILL> operates similarly, with exceptions.  No signal-delivery-stop is "
3022 "generated for B<SIGKILL> and therefore the tracer can't suppress it.  "
3023 "B<SIGKILL> kills even within system calls (syscall-exit-stop is not "
3024 "generated prior to death by B<SIGKILL>).  The net effect is that B<SIGKILL> "
3025 "always kills the process (all its threads), even if some threads of the "
3026 "process are ptraced."
3027 msgstr ""
3028
3029 #. type: Plain text
3030 #: build/C/man2/ptrace.2:597
3031 msgid ""
3032 "When the tracee calls B<_exit>(2), it reports its death to its tracer.  "
3033 "Other threads are not affected."
3034 msgstr ""
3035
3036 #. type: Plain text
3037 #: build/C/man2/ptrace.2:601
3038 msgid ""
3039 "When any thread executes B<exit_group>(2), every tracee in its thread group "
3040 "reports its death to its tracer."
3041 msgstr ""
3042
3043 #. type: Plain text
3044 #: build/C/man2/ptrace.2:615
3045 msgid ""
3046 "If the B<PTRACE_O_TRACEEXIT> option is on, B<PTRACE_EVENT_EXIT> will happen "
3047 "before actual death.  This applies to exits via B<exit>(2), B<exit_group>"
3048 "(2), and signal deaths (except B<SIGKILL>), and when threads are torn down "
3049 "on B<execve>(2)  in a multithreaded process."
3050 msgstr ""
3051
3052 #. type: Plain text
3053 #: build/C/man2/ptrace.2:640
3054 msgid ""
3055 "The tracer cannot assume that the ptrace-stopped tracee exists.  There are "
3056 "many scenarios when the tracee may die while stopped (such as B<SIGKILL>).  "
3057 "Therefore, the tracer must be prepared to handle an B<ESRCH> error on any "
3058 "ptrace operation.  Unfortunately, the same error is returned if the tracee "
3059 "exists but is not ptrace-stopped (for commands which require a stopped "
3060 "tracee), or if it is not traced by the process which issued the ptrace "
3061 "call.  The tracer needs to keep track of the stopped/running state of the "
3062 "tracee, and interpret B<ESRCH> as \"tracee died unexpectedly\" only if it "
3063 "knows that the tracee has been observed to enter ptrace-stop.  Note that "
3064 "there is no guarantee that I<waitpid(WNOHANG)> will reliably report the "
3065 "tracee's death status if a ptrace operation returned B<ESRCH>.  I<waitpid"
3066 "(WNOHANG)> may return 0 instead.  In other words, the tracee may be \"not "
3067 "yet fully dead\", but already refusing ptrace requests."
3068 msgstr ""
3069
3070 #. type: Plain text
3071 #: build/C/man2/ptrace.2:654
3072 msgid ""
3073 "The tracer can't assume that the tracee I<always> ends its life by reporting "
3074 "I<WIFEXITED(status)> or I<WIFSIGNALED(status)>; there are cases where this "
3075 "does not occur.  For example, if a thread other than thread group leader "
3076 "does an B<execve>(2), it disappears; its PID will never be seen again, and "
3077 "any subsequent ptrace stops will be reported under the thread group leader's "
3078 "PID."
3079 msgstr ""
3080
3081 #. type: SS
3082 #: build/C/man2/ptrace.2:654
3083 #, no-wrap
3084 msgid "Stopped states"
3085 msgstr ""
3086
3087 #. type: Plain text
3088 #: build/C/man2/ptrace.2:656
3089 msgid "A tracee can be in two states: running or stopped."
3090 msgstr ""
3091
3092 #. type: Plain text
3093 #: build/C/man2/ptrace.2:660
3094 msgid ""
3095 "There are many kinds of states when the tracee is stopped, and in ptrace "
3096 "discussions they are often conflated.  Therefore, it is important to use "
3097 "precise terms."
3098 msgstr ""
3099
3100 #. type: Plain text
3101 #: build/C/man2/ptrace.2:671
3102 msgid ""
3103 "In this manual page, any stopped state in which the tracee is ready to "
3104 "accept ptrace commands from the tracer is called I<ptrace-stop>.  Ptrace-"
3105 "stops can be further subdivided into I<signal-delivery-stop>, I<group-stop>, "
3106 "I<syscall-stop>, and so on.  These stopped states are described in detail "
3107 "below."
3108 msgstr ""
3109
3110 #. type: Plain text
3111 #: build/C/man2/ptrace.2:676
3112 msgid ""
3113 "When the running tracee enters ptrace-stop, it notifies its tracer using "
3114 "B<waitpid>(2)  (or one of the other \"wait\" system calls).  Most of this "
3115 "manual page assumes that the tracer waits with:"
3116 msgstr ""
3117
3118 #. type: Plain text
3119 #: build/C/man2/ptrace.2:678
3120 #, no-wrap
3121 msgid "    pid = waitpid(pid_or_minus_1, &status, __WALL);\n"
3122 msgstr ""
3123
3124 #.  Denys Vlasenko:
3125 #.      Do we require __WALL usage, or will just using 0 be ok? (With 0,
3126 #.      I am not 100% sure there aren't ugly corner cases.) Are the
3127 #.      rules different if user wants to use waitid? Will waitid require
3128 #.      WEXITED?
3129 #. type: Plain text
3130 #: build/C/man2/ptrace.2:690
3131 msgid ""
3132 "Ptrace-stopped tracees are reported as returns with I<pid> greater than 0 "
3133 "and I<WIFSTOPPED(status)> true."
3134 msgstr ""
3135
3136 #. type: Plain text
3137 #: build/C/man2/ptrace.2:698
3138 msgid ""
3139 "The B<__WALL> flag does not include the B<WSTOPPED> and B<WEXITED> flags, "
3140 "but implies their functionality."
3141 msgstr ""
3142
3143 #. type: Plain text
3144 #: build/C/man2/ptrace.2:705
3145 msgid ""
3146 "Setting the B<WCONTINUED> flag when calling B<waitpid>(2)  is not "
3147 "recommended: the \"continued\" state is per-process and consuming it can "
3148 "confuse the real parent of the tracee."
3149 msgstr ""
3150
3151 #. type: Plain text
3152 #: build/C/man2/ptrace.2:713
3153 msgid ""
3154 "Use of the B<WNOHANG> flag may cause B<waitpid>(2)  to return 0 (\"no wait "
3155 "results available yet\")  even if the tracer knows there should be a "
3156 "notification.  Example:"
3157 msgstr ""
3158
3159 #. type: Plain text
3160 #: build/C/man2/ptrace.2:717
3161 #, no-wrap
3162 msgid ""
3163 "    kill(tracee, SIGKILL);\n"
3164 "    waitpid(tracee, &status, __WALL | WNOHANG);\n"
3165 msgstr ""
3166
3167 #. type: Plain text
3168 #: build/C/man2/ptrace.2:740
3169 msgid ""
3170 "The following kinds of ptrace-stops exist: signal-delivery-stops, group-"
3171 "stops, B<PTRACE_EVENT> stops, syscall-stops.  They all are reported by "
3172 "B<waitpid>(2)  with I<WIFSTOPPED(status)> true.  They may be differentiated "
3173 "by examining the value I<statusE<gt>E<gt>8>, and if there is ambiguity in "
3174 "that value, by querying B<PTRACE_GETSIGINFO>.  (Note: the I<WSTOPSIG(status)"
3175 "> macro can't be used to perform this examination, because it returns the "
3176 "value I<(status\\E<gt>E<gt>8)\\ &\\ 0xff>.)"
3177 msgstr ""
3178
3179 #. type: SS
3180 #: build/C/man2/ptrace.2:740
3181 #, no-wrap
3182 msgid "Signal-delivery-stop"
3183 msgstr ""
3184
3185 #. type: Plain text
3186 #: build/C/man2/ptrace.2:760
3187 msgid ""
3188 "When a (possibly multithreaded) process receives any signal except "
3189 "B<SIGKILL>, the kernel selects an arbitrary thread which handles the "
3190 "signal.  (If the signal is generated with B<tgkill>(2), the target thread "
3191 "can be explicitly selected by the caller.)  If the selected thread is "
3192 "traced, it enters signal-delivery-stop.  At this point, the signal is not "
3193 "yet delivered to the process, and can be suppressed by the tracer.  If the "
3194 "tracer doesn't suppress the signal, it passes the signal to the tracee in "
3195 "the next ptrace restart request.  This second step of signal delivery is "
3196 "called I<signal injection> in this manual page.  Note that if the signal is "
3197 "blocked, signal-delivery-stop doesn't happen until the signal is unblocked, "
3198 "with the usual exception that B<SIGSTOP> can't be blocked."
3199 msgstr ""
3200
3201 #. type: Plain text
3202 #: build/C/man2/ptrace.2:774
3203 msgid ""
3204 "Signal-delivery-stop is observed by the tracer as B<waitpid>(2)  returning "
3205 "with I<WIFSTOPPED(status)> true, with the signal returned by I<WSTOPSIG"
3206 "(status)>.  If the signal is B<SIGTRAP>, this may be a different kind of "
3207 "ptrace-stop; see the \"Syscall-stops\" and \"execve\" sections below for "
3208 "details.  If I<WSTOPSIG(status)> returns a stopping signal, this may be a "
3209 "group-stop; see below."
3210 msgstr ""
3211
3212 #. type: SS
3213 #: build/C/man2/ptrace.2:774
3214 #, no-wrap
3215 msgid "Signal injection and suppression"
3216 msgstr ""
3217
3218 #. type: Plain text
3219 #: build/C/man2/ptrace.2:777
3220 msgid ""
3221 "After signal-delivery-stop is observed by the tracer, the tracer should "
3222 "restart the tracee with the call"
3223 msgstr ""
3224
3225 #. type: Plain text
3226 #: build/C/man2/ptrace.2:779
3227 #, no-wrap
3228 msgid "    ptrace(PTRACE_restart, pid, 0, sig)\n"
3229 msgstr ""
3230
3231 #. type: Plain text
3232 #: build/C/man2/ptrace.2:792
3233 msgid ""
3234 "where B<PTRACE_restart> is one of the restarting ptrace requests.  If I<sig> "
3235 "is 0, then a signal is not delivered.  Otherwise, the signal I<sig> is "
3236 "delivered.  This operation is called I<signal injection> in this manual "
3237 "page, to distinguish it from signal-delivery-stop."
3238 msgstr ""
3239
3240 #. type: Plain text
3241 #: build/C/man2/ptrace.2:798
3242 msgid ""
3243 "The I<sig> value may be different from the I<WSTOPSIG(status)> value: the "
3244 "tracer can cause a different signal to be injected."
3245 msgstr ""
3246
3247 #. type: Plain text
3248 #: build/C/man2/ptrace.2:814
3249 msgid ""
3250 "Note that a suppressed signal still causes system calls to return "
3251 "prematurely.  In this case system calls will be restarted: the tracer will "
3252 "observe the tracee to reexecute the interrupted system call (or "
3253 "B<restart_syscall>(2)  system call for a few syscalls which use a different "
3254 "mechanism for restarting) if the tracer uses B<PTRACE_SYSCALL>.  Even system "
3255 "calls (such as B<poll>(2))  which are not restartable after signal are "
3256 "restarted after signal is suppressed; however, kernel bugs exist which cause "
3257 "some syscalls to fail with B<EINTR> even though no observable signal is "
3258 "injected to the tracee."
3259 msgstr ""
3260
3261 #. type: Plain text
3262 #: build/C/man2/ptrace.2:825
3263 msgid ""
3264 "Restarting ptrace commands issued in ptrace-stops other than signal-delivery-"
3265 "stop are not guaranteed to inject a signal, even if I<sig> is nonzero.  No "
3266 "error is reported; a nonzero I<sig> may simply be ignored.  Ptrace users "
3267 "should not try to \"create a new signal\" this way: use B<tgkill>(2)  "
3268 "instead."
3269 msgstr ""
3270
3271 #. type: Plain text
3272 #: build/C/man2/ptrace.2:832
3273 msgid ""
3274 "The fact that signal injection requests may be ignored when restarting the "
3275 "tracee after ptrace stops that are not signal-delivery-stops is a cause of "
3276 "confusion among ptrace users.  One typical scenario is that the tracer "
3277 "observes group-stop, mistakes it for signal-delivery-stop, restarts the "
3278 "tracee with"
3279 msgstr ""
3280
3281 #. type: Plain text
3282 #: build/C/man2/ptrace.2:834
3283 #, no-wrap
3284 msgid "    ptrace(PTRACE_rest, pid, 0, stopsig)\n"
3285 msgstr ""
3286
3287 #. type: Plain text
3288 #: build/C/man2/ptrace.2:840
3289 msgid ""
3290 "with the intention of injecting I<stopsig>, but I<stopsig> gets ignored and "
3291 "the tracee continues to run."
3292 msgstr ""
3293
3294 #. type: Plain text
3295 #: build/C/man2/ptrace.2:860
3296 msgid ""
3297 "The B<SIGCONT> signal has a side effect of waking up (all threads of)  a "
3298 "group-stopped process.  This side effect happens before signal-delivery-"
3299 "stop.  The tracer can't suppress this side effect (it can only suppress "
3300 "signal injection, which only causes the B<SIGCONT> handler to not be "
3301 "executed in the tracee, if such a handler is installed).  In fact, waking up "
3302 "from group-stop may be followed by signal-delivery-stop for signal(s)  "
3303 "I<other than> B<SIGCONT>, if they were pending when B<SIGCONT> was "
3304 "delivered.  In other words, B<SIGCONT> may be not the first signal observed "
3305 "by the tracee after it was sent."
3306 msgstr ""
3307
3308 #. type: Plain text
3309 #: build/C/man2/ptrace.2:864
3310 msgid ""
3311 "Stopping signals cause (all threads of) a process to enter group-stop.  This "
3312 "side effect happens after signal injection, and therefore can be suppressed "
3313 "by the tracer."
3314 msgstr ""
3315
3316 #
3317 #.  In the Linux 2.4 sources, in arch/i386/kernel/signal.c::do_signal(),
3318 #.  there is:
3319 #.              /* The debugger continued.  Ignore SIGSTOP.  */
3320 #.              if (signr == SIGSTOP)
3321 #.                      continue;
3322 #. type: Plain text
3323 #: build/C/man2/ptrace.2:874
3324 msgid "In Linux 2.4 and earlier, the B<SIGSTOP> signal can't be injected."
3325 msgstr ""
3326
3327 #. type: Plain text
3328 #: build/C/man2/ptrace.2:891
3329 msgid ""
3330 "B<PTRACE_GETSIGINFO> can be used to retrieve a I<siginfo_t> structure which "
3331 "corresponds to the delivered signal.  B<PTRACE_SETSIGINFO> may be used to "
3332 "modify it.  If B<PTRACE_SETSIGINFO> has been used to alter I<siginfo_t>, the "
3333 "I<si_signo> field and the I<sig> parameter in the restarting command must "
3334 "match, otherwise the result is undefined."
3335 msgstr ""
3336
3337 #. type: SS
3338 #: build/C/man2/ptrace.2:891
3339 #, no-wrap
3340 msgid "Group-stop"
3341 msgstr ""
3342
3343 #. type: Plain text
3344 #: build/C/man2/ptrace.2:903
3345 msgid ""
3346 "When a (possibly multithreaded) process receives a stopping signal, all "
3347 "threads stop.  If some threads are traced, they enter a group-stop.  Note "
3348 "that the stopping signal will first cause signal-delivery-stop (on one "
3349 "tracee only), and only after it is injected by the tracer (or after it was "
3350 "dispatched to a thread which isn't traced), will group-stop be initiated on "
3351 "I<all> tracees within the multithreaded process.  As usual, every tracee "
3352 "reports its group-stop separately to the corresponding tracer."
3353 msgstr ""
3354
3355 #. type: Plain text
3356 #: build/C/man2/ptrace.2:912
3357 msgid ""
3358 "Group-stop is observed by the tracer as B<waitpid>(2)  returning with "
3359 "I<WIFSTOPPED(status)> true, with the stopping signal available via I<WSTOPSIG"
3360 "(status)>.  The same result is returned by some other classes of ptrace-"
3361 "stops, therefore the recommended practice is to perform the call"
3362 msgstr ""
3363
3364 #. type: Plain text
3365 #: build/C/man2/ptrace.2:914
3366 #, no-wrap
3367 msgid "    ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo)\n"
3368 msgstr ""
3369
3370 #. type: Plain text
3371 #: build/C/man2/ptrace.2:935
3372 msgid ""
3373 "The call can be avoided if the signal is not B<SIGSTOP>, B<SIGTSTP>, "
3374 "B<SIGTTIN>, or B<SIGTTOU>; only these four signals are stopping signals.  If "
3375 "the tracer sees something else, it can't be a group-stop.  Otherwise, the "
3376 "tracer needs to call B<PTRACE_GETSIGINFO>.  If B<PTRACE_GETSIGINFO> fails "
3377 "with B<EINVAL>, then it is definitely a group-stop.  (Other failure codes "
3378 "are possible, such as B<ESRCH> (\"no such process\") if a B<SIGKILL> killed "
3379 "the tracee.)"
3380 msgstr ""
3381
3382 #. type: Plain text
3383 #: build/C/man2/ptrace.2:944
3384 msgid ""
3385 "As of kernel 2.6.38, after the tracer sees the tracee ptrace-stop and until "
3386 "it restarts or kills it, the tracee will not run, and will not send "
3387 "notifications (except B<SIGKILL> death) to the tracer, even if the tracer "
3388 "enters into another B<waitpid>(2)  call."
3389 msgstr ""
3390
3391 #. type: Plain text
3392 #: build/C/man2/ptrace.2:958
3393 msgid ""
3394 "The kernel behavior described in the previous paragraph causes a problem "
3395 "with transparent handling of stopping signals.  If the tracer restarts the "
3396 "tracee after group-stop, the stopping signal is effectively ignored\\(emthe "
3397 "tracee doesn't remain stopped, it runs.  If the tracer doesn't restart the "
3398 "tracee before entering into the next B<waitpid>(2), future B<SIGCONT> "
3399 "signals will not be reported to the tracer; this would cause the B<SIGCONT> "
3400 "signals to have no effect on the tracee."
3401 msgstr ""
3402
3403 #. type: SS
3404 #: build/C/man2/ptrace.2:958
3405 #, no-wrap
3406 msgid "PTRACE_EVENT stops"
3407 msgstr ""
3408
3409 #. type: Plain text
3410 #: build/C/man2/ptrace.2:964
3411 msgid ""
3412 "If the tracer sets B<PTRACE_O_TRACE_*> options, the tracee will enter ptrace-"
3413 "stops called B<PTRACE_EVENT> stops."
3414 msgstr ""
3415
3416 #. type: Plain text
3417 #: build/C/man2/ptrace.2:978
3418 msgid ""
3419 "B<PTRACE_EVENT> stops are observed by the tracer as B<waitpid>(2)  returning "
3420 "with I<WIFSTOPPED(status)>, and I<WSTOPSIG(status)> returns B<SIGTRAP>.  An "
3421 "additional bit is set in the higher byte of the status word: the value "
3422 "I<statusE<gt>E<gt>8> will be"
3423 msgstr ""
3424
3425 #. type: Plain text
3426 #: build/C/man2/ptrace.2:980
3427 #, no-wrap
3428 msgid "    (SIGTRAP | PTRACE_EVENT_foo E<lt>E<lt> 8).\n"
3429 msgstr ""
3430
3431 #. type: Plain text
3432 #: build/C/man2/ptrace.2:982
3433 msgid "The following events exist:"
3434 msgstr ""
3435
3436 #. type: TP
3437 #: build/C/man2/ptrace.2:982
3438 #, fuzzy, no-wrap
3439 #| msgid "B<PTRACE_CONT>"
3440 msgid "B<PTRACE_EVENT_VFORK>"
3441 msgstr "B<PTRACE_CONT>"
3442
3443 #. type: Plain text
3444 #: build/C/man2/ptrace.2:995
3445 msgid ""
3446 "Stop before return from B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> "
3447 "flag.  When the tracee is continued after this stop, it will wait for child "
3448 "to exit/exec before continuing its execution (in other words, the usual "
3449 "behavior on B<vfork>(2))."
3450 msgstr ""
3451
3452 #. type: TP
3453 #: build/C/man2/ptrace.2:995
3454 #, fuzzy, no-wrap
3455 #| msgid "B<PTRACE_CONT>"
3456 msgid "B<PTRACE_EVENT_FORK>"
3457 msgstr "B<PTRACE_CONT>"
3458
3459 #. type: Plain text
3460 #: build/C/man2/ptrace.2:1003
3461 msgid ""
3462 "Stop before return from B<fork>(2)  or B<clone>(2)  with the exit signal set "
3463 "to B<SIGCHLD>."
3464 msgstr ""
3465
3466 #. type: TP
3467 #: build/C/man2/ptrace.2:1003
3468 #, fuzzy, no-wrap
3469 #| msgid "B<PTRACE_CONT>"
3470 msgid "B<PTRACE_EVENT_CLONE>"
3471 msgstr "B<PTRACE_CONT>"
3472
3473 #. type: Plain text
3474 #: build/C/man2/ptrace.2:1007
3475 msgid "Stop before return from B<clone>(2)."
3476 msgstr ""
3477
3478 #. type: TP
3479 #: build/C/man2/ptrace.2:1007
3480 #, fuzzy, no-wrap
3481 #| msgid "B<PTRACE_PEEKUSER>"
3482 msgid "B<PTRACE_EVENT_VFORK_DONE>"
3483 msgstr "B<PTRACE_PEEKUSER>"
3484
3485 #. type: Plain text
3486 #: build/C/man2/ptrace.2:1017
3487 msgid ""
3488 "Stop before return from B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> "
3489 "flag, but after the child unblocked this tracee by exiting or execing."
3490 msgstr ""
3491
3492 #. type: Plain text
3493 #: build/C/man2/ptrace.2:1023
3494 msgid ""
3495 "For all four stops described above, the stop occurs in the parent (i.e., the "
3496 "tracee), not in the newly created thread.  B<PTRACE_GETEVENTMSG> can be used "
3497 "to retrieve the new thread's ID."
3498 msgstr ""
3499
3500 #. type: TP
3501 #: build/C/man2/ptrace.2:1023
3502 #, fuzzy, no-wrap
3503 #| msgid "B<PTRACE_DETACH>"
3504 msgid "B<PTRACE_EVENT_EXEC>"
3505 msgstr "B<PTRACE_DETACH>"
3506
3507 #. type: Plain text
3508 #: build/C/man2/ptrace.2:1030
3509 msgid ""
3510 "Stop before return from B<execve>(2).  Since Linux 3.0, "
3511 "B<PTRACE_GETEVENTMSG> returns the former thread ID."
3512 msgstr ""
3513
3514 #. type: TP
3515 #: build/C/man2/ptrace.2:1030
3516 #, fuzzy, no-wrap
3517 #| msgid "B<PTRACE_CONT>"
3518 msgid "B<PTRACE_EVENT_EXIT>"
3519 msgstr "B<PTRACE_CONT>"
3520
3521 #. type: Plain text
3522 #: build/C/man2/ptrace.2:1046
3523 msgid ""
3524 "Stop before exit (including death from B<exit_group>(2)), signal death, or "
3525 "exit caused by B<execve>(2)  in a multithreaded process.  "
3526 "B<PTRACE_GETEVENTMSG> returns the exit status.  Registers can be examined "
3527 "(unlike when \"real\" exit happens).  The tracee is still alive; it needs to "
3528 "be B<PTRACE_CONT>ed or B<PTRACE_DETACH>ed to finish exiting."
3529 msgstr ""
3530
3531 #. type: Plain text
3532 #: build/C/man2/ptrace.2:1058
3533 msgid ""
3534 "B<PTRACE_GETSIGINFO> on B<PTRACE_EVENT> stops returns B<SIGTRAP> in "
3535 "I<si_signo>, with I<si_code> set to I<(eventE<lt>E<lt>8)\\ |\\ SIGTRAP>."
3536 msgstr ""
3537
3538 #. type: SS
3539 #: build/C/man2/ptrace.2:1058
3540 #, no-wrap
3541 msgid "Syscall-stops"
3542 msgstr ""
3543
3544 #. type: Plain text
3545 #: build/C/man2/ptrace.2:1071
3546 msgid ""
3547 "If the tracee was restarted by B<PTRACE_SYSCALL>, the tracee enters syscall-"
3548 "enter-stop just prior to entering any system call.  If the tracer restarts "
3549 "the tracee with B<PTRACE_SYSCALL>, the tracee enters syscall-exit-stop when "
3550 "the system call is finished, or if it is interrupted by a signal.  (That is, "
3551 "signal-delivery-stop never happens between syscall-enter-stop and syscall-"
3552 "exit-stop; it happens I<after> syscall-exit-stop.)"
3553 msgstr ""
3554
3555 #. type: Plain text
3556 #: build/C/man2/ptrace.2:1085
3557 msgid ""
3558 "Other possibilities are that the tracee may stop in a B<PTRACE_EVENT> stop, "
3559 "exit (if it entered B<_exit>(2)  or B<exit_group>(2)), be killed by "
3560 "B<SIGKILL>, or die silently (if it is a thread group leader, the B<execve>"
3561 "(2)  happened in another thread, and that thread is not traced by the same "
3562 "tracer; this situation is discussed later)."
3563 msgstr ""
3564
3565 #. type: Plain text
3566 #: build/C/man2/ptrace.2:1100
3567 msgid ""
3568 "Syscall-enter-stop and syscall-exit-stop are observed by the tracer as "
3569 "B<waitpid>(2)  returning with I<WIFSTOPPED(status)> true, and I<WSTOPSIG"
3570 "(status)> giving B<SIGTRAP>.  If the B<PTRACE_O_TRACESYSGOOD> option was set "
3571 "by the tracer, then I<WSTOPSIG(status)> will give the value I<(SIGTRAP\\ |\\ "
3572 "0x80)>."
3573 msgstr ""
3574
3575 #. type: Plain text
3576 #: build/C/man2/ptrace.2:1106
3577 msgid ""
3578 "Syscall-stops can be distinguished from signal-delivery-stop with B<SIGTRAP> "
3579 "by querying B<PTRACE_GETSIGINFO> for the following cases:"
3580 msgstr ""
3581
3582 #. type: TP
3583 #: build/C/man2/ptrace.2:1106
3584 #, no-wrap
3585 msgid "I<si_code> E<lt>= 0"
3586 msgstr ""
3587
3588 #. type: Plain text
3589 #: build/C/man2/ptrace.2:1118
3590 msgid ""
3591 "B<SIGTRAP> was delivered as a result of a userspace action, for example, a "
3592 "system call (B<tgkill>(2), B<kill>(2), B<sigqueue>(3), etc.), expiration of "
3593 "a POSIX timer, change of state on a POSIX message queue, or completion of an "
3594 "asynchronous I/O request."
3595 msgstr ""
3596
3597 #. type: TP
3598 #: build/C/man2/ptrace.2:1118
3599 #, no-wrap
3600 msgid "I<si_code> == SI_KERNEL (0x80)"
3601 msgstr ""
3602
3603 #. type: Plain text
3604 #: build/C/man2/ptrace.2:1122
3605 msgid "B<SIGTRAP> was sent by the kernel."
3606 msgstr ""
3607
3608 #. type: TP
3609 #: build/C/man2/ptrace.2:1122
3610 #, no-wrap
3611 msgid "I<si_code> == SIGTRAP or I<si_code> == (SIGTRAP|0x80)"
3612 msgstr ""
3613
3614 #. type: Plain text
3615 #: build/C/man2/ptrace.2:1125
3616 msgid "This is a syscall-stop."
3617 msgstr ""
3618
3619 #. type: Plain text
3620 #: build/C/man2/ptrace.2:1130
3621 msgid ""
3622 "However, syscall-stops happen very often (twice per system call), and "
3623 "performing B<PTRACE_GETSIGINFO> for every syscall-stop may be somewhat "
3624 "expensive."
3625 msgstr ""
3626
3627 #. type: Plain text
3628 #: build/C/man2/ptrace.2:1153
3629 msgid ""
3630 "Some architectures allow the cases to be distinguished by examining "
3631 "registers.  For example, on x86, I<rax> == -B<ENOSYS> in syscall-enter-"
3632 "stop.  Since B<SIGTRAP> (like any other signal) always happens I<after> "
3633 "syscall-exit-stop, and at this point I<rax> almost never contains -"
3634 "B<ENOSYS>, the B<SIGTRAP> looks like \"syscall-stop which is not syscall-"
3635 "enter-stop\"; in other words, it looks like a \"stray syscall-exit-stop\" "
3636 "and can be detected this way.  But such detection is fragile and is best "
3637 "avoided."
3638 msgstr ""
3639
3640 #. type: Plain text
3641 #: build/C/man2/ptrace.2:1159
3642 msgid ""
3643 "Using the B<PTRACE_O_TRACESYSGOOD> option is the recommended method to "
3644 "distinguish syscall-stops from other kinds of ptrace-stops, since it is "
3645 "reliable and does not incur a performance penalty."
3646 msgstr ""
3647
3648 #. type: Plain text
3649 #: build/C/man2/ptrace.2:1170
3650 msgid ""
3651 "Syscall-enter-stop and syscall-exit-stop are indistinguishable from each "
3652 "other by the tracer.  The tracer needs to keep track of the sequence of "
3653 "ptrace-stops in order to not misinterpret syscall-enter-stop as syscall-exit-"
3654 "stop or vice versa.  The rule is that syscall-enter-stop is always followed "
3655 "by syscall-exit-stop, B<PTRACE_EVENT> stop or the tracee's death; no other "
3656 "kinds of ptrace-stop can occur in between."
3657 msgstr ""
3658
3659 #. type: Plain text
3660 #: build/C/man2/ptrace.2:1175
3661 msgid ""
3662 "If after syscall-enter-stop, the tracer uses a restarting command other than "
3663 "B<PTRACE_SYSCALL>, syscall-exit-stop is not generated."
3664 msgstr ""
3665
3666 #. type: Plain text
3667 #: build/C/man2/ptrace.2:1187
3668 msgid ""
3669 "B<PTRACE_GETSIGINFO> on syscall-stops returns B<SIGTRAP> in I<si_signo>, "
3670 "with I<si_code> set to B<SIGTRAP> or I<(SIGTRAP|0x80)>."
3671 msgstr ""
3672
3673 #. type: SS
3674 #: build/C/man2/ptrace.2:1187
3675 #, fuzzy, no-wrap
3676 #| msgid "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (since Linux 2.6.14)"
3677 msgid "PTRACE_SINGLESTEP, PTRACE_SYSEMU, PTRACE_SYSEMU_SINGLESTEP stops"
3678 msgstr "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (Linux 2.6.14 以降)"
3679
3680 #
3681 #.  FIXME
3682 #.  document stops occurring with PTRACE_SINGLESTEP, PTRACE_SYSEMU,
3683 #.  PTRACE_SYSEMU_SINGLESTEP
3684 #. type: Plain text
3685 #: build/C/man2/ptrace.2:1193
3686 msgid "[Details of these kinds of stops are yet to be documented.]"
3687 msgstr ""
3688
3689 #. type: SS
3690 #: build/C/man2/ptrace.2:1193
3691 #, no-wrap
3692 msgid "Informational and restarting ptrace commands"
3693 msgstr ""
3694
3695 #. type: Plain text
3696 #: build/C/man2/ptrace.2:1201
3697 msgid ""
3698 "Most ptrace commands (all except B<PTRACE_ATTACH>, B<PTRACE_TRACEME>, and "
3699 "B<PTRACE_KILL>)  require the tracee to be in a ptrace-stop, otherwise they "
3700 "fail with B<ESRCH>."
3701 msgstr ""
3702
3703 #. type: Plain text
3704 #: build/C/man2/ptrace.2:1206
3705 msgid ""
3706 "When the tracee is in ptrace-stop, the tracer can read and write data to the "
3707 "tracee using informational commands.  These commands leave the tracee in "
3708 "ptrace-stopped state:"
3709 msgstr ""
3710
3711 #. type: Plain text
3712 #: build/C/man2/ptrace.2:1216
3713 #, no-wrap
3714 msgid ""
3715 "    ptrace(PTRACE_PEEKTEXT/PEEKDATA/PEEKUSER, pid, addr, 0);\n"
3716 "    ptrace(PTRACE_POKETEXT/POKEDATA/POKEUSER, pid, addr, long_val);\n"
3717 "    ptrace(PTRACE_GETREGS/GETFPREGS, pid, 0, &struct);\n"
3718 "    ptrace(PTRACE_SETREGS/SETFPREGS, pid, 0, &struct);\n"
3719 "    ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo);\n"
3720 "    ptrace(PTRACE_SETSIGINFO, pid, 0, &siginfo);\n"
3721 "    ptrace(PTRACE_GETEVENTMSG, pid, 0, &long_var);\n"
3722 "    ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n"
3723 msgstr ""
3724
3725 #. type: Plain text
3726 #: build/C/man2/ptrace.2:1228
3727 msgid ""
3728 "Note that some errors are not reported.  For example, setting signal "
3729 "information (I<siginfo>)  may have no effect in some ptrace-stops, yet the "
3730 "call may succeed (return 0 and not set I<errno>); querying "
3731 "B<PTRACE_GETEVENTMSG> may succeed and return some random value if current "
3732 "ptrace-stop is not documented as returning a meaningful event message."
3733 msgstr ""
3734
3735 #. type: Plain text
3736 #: build/C/man2/ptrace.2:1230
3737 msgid "The call"
3738 msgstr ""
3739
3740 #. type: Plain text
3741 #: build/C/man2/ptrace.2:1232
3742 #, no-wrap
3743 msgid "    ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n"
3744 msgstr ""
3745
3746 #. type: Plain text
3747 #: build/C/man2/ptrace.2:1241
3748 msgid ""
3749 "affects one tracee.  The tracee's current flags are replaced.  Flags are "
3750 "inherited by new tracees created and \"auto-attached\" via active "
3751 "B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or B<PTRACE_O_TRACECLONE> "
3752 "options."
3753 msgstr ""
3754
3755 #. type: Plain text
3756 #: build/C/man2/ptrace.2:1244
3757 msgid ""
3758 "Another group of commands makes the ptrace-stopped tracee run.  They have "
3759 "the form:"
3760 msgstr ""
3761
3762 #. type: Plain text
3763 #: build/C/man2/ptrace.2:1246
3764 #, no-wrap
3765 msgid "    ptrace(cmd, pid, 0, sig);\n"
3766 msgstr ""
3767
3768 #. type: Plain text
3769 #: build/C/man2/ptrace.2:1266
3770 msgid ""
3771 "where I<cmd> is B<PTRACE_CONT>, B<PTRACE_DETACH>, B<PTRACE_SYSCALL>, "
3772 "B<PTRACE_SINGLESTEP>, B<PTRACE_SYSEMU>, or B<PTRACE_SYSEMU_SINGLESTEP>.  If "
3773 "the tracee is in signal-delivery-stop, I<sig> is the signal to be injected "
3774 "(if it is nonzero).  Otherwise, I<sig> may be ignored.  (When restarting a "
3775 "tracee from a ptrace-stop other than signal-delivery-stop, recommended "
3776 "practice is to always pass 0 in I<sig>.)"
3777 msgstr ""
3778
3779 #. type: SS
3780 #: build/C/man2/ptrace.2:1266
3781 #, no-wrap
3782 msgid "Attaching and detaching"
3783 msgstr ""
3784
3785 #. type: Plain text
3786 #: build/C/man2/ptrace.2:1268
3787 msgid "A thread can be attached to the tracer using the call"
3788 msgstr ""
3789
3790 #. type: Plain text
3791 #: build/C/man2/ptrace.2:1270
3792 #, no-wrap
3793 msgid "    ptrace(PTRACE_ATTACH, pid, 0, 0);\n"
3794 msgstr ""
3795
3796 #
3797 #.  FIXME: Describe how to attach to a thread which is already
3798 #.         group-stopped.
3799 #. type: Plain text
3800 #: build/C/man2/ptrace.2:1294
3801 msgid ""
3802 "This also sends B<SIGSTOP> to this thread.  If the tracer wants this "
3803 "B<SIGSTOP> to have no effect, it needs to suppress it.  Note that if other "
3804 "signals are concurrently sent to this thread during attach, the tracer may "
3805 "see the tracee enter signal-delivery-stop with other signal(s) first! The "
3806 "usual practice is to reinject these signals until B<SIGSTOP> is seen, then "
3807 "suppress B<SIGSTOP> injection.  The design bug here is that a ptrace attach "
3808 "and a concurrently delivered B<SIGSTOP> may race and the concurrent "
3809 "B<SIGSTOP> may be lost."
3810 msgstr ""
3811
3812 #. type: Plain text
3813 #: build/C/man2/ptrace.2:1301
3814 msgid ""
3815 "Since attaching sends B<SIGSTOP> and the tracer usually suppresses it, this "
3816 "may cause a stray B<EINTR> return from the currently executing system call "
3817 "in the tracee, as described in the \"Signal injection and suppression\" "
3818 "section."
3819 msgstr ""
3820
3821 #. type: Plain text
3822 #: build/C/man2/ptrace.2:1303
3823 msgid "The request"
3824 msgstr ""
3825
3826 #. type: Plain text
3827 #: build/C/man2/ptrace.2:1305
3828 #, no-wrap
3829 msgid "    ptrace(PTRACE_TRACEME, 0, 0, 0);\n"
3830 msgstr ""
3831
3832 #. type: Plain text
3833 #: build/C/man2/ptrace.2:1311
3834 msgid ""
3835 "turns the calling thread into a tracee.  The thread continues to run "
3836 "(doesn't enter ptrace-stop).  A common practice is to follow the "
3837 "B<PTRACE_TRACEME> with"
3838 msgstr ""
3839
3840 #. type: Plain text
3841 #: build/C/man2/ptrace.2:1313
3842 #, no-wrap
3843 msgid "    raise(SIGSTOP);\n"
3844 msgstr ""
3845
3846 #. type: Plain text
3847 #: build/C/man2/ptrace.2:1316
3848 msgid ""
3849 "and allow the parent (which is our tracer now) to observe our signal-"
3850 "delivery-stop."
3851 msgstr ""
3852
3853 #. type: Plain text
3854 #: build/C/man2/ptrace.2:1340
3855 msgid ""
3856 "If the B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or "
3857 "B<PTRACE_O_TRACECLONE> options are in effect, then children created by, "
3858 "respectively, B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> flag, "
3859 "B<fork>(2)  or B<clone>(2)  with the exit signal set to B<SIGCHLD>, and "
3860 "other kinds of B<clone>(2), are automatically attached to the same tracer "
3861 "which traced their parent.  B<SIGSTOP> is delivered to the children, causing "
3862 "them to enter signal-delivery-stop after they exit the system call which "
3863 "created them."
3864 msgstr ""
3865
3866 #. type: Plain text
3867 #: build/C/man2/ptrace.2:1342
3868 msgid "Detaching of the tracee is performed by:"
3869 msgstr ""
3870
3871 #. type: Plain text
3872 #: build/C/man2/ptrace.2:1344
3873 #, no-wrap
3874 msgid "    ptrace(PTRACE_DETACH, pid, 0, sig);\n"
3875 msgstr ""
3876
3877 #. type: Plain text
3878 #: build/C/man2/ptrace.2:1352
3879 msgid ""
3880 "B<PTRACE_DETACH> is a restarting operation; therefore it requires the tracee "
3881 "to be in ptrace-stop.  If the tracee is in signal-delivery-stop, a signal "
3882 "can be injected.  Otherwise, the I<sig> parameter may be silently ignored."
3883 msgstr ""
3884
3885 #.  FIXME: Describe how to detach from a group-stopped tracee so that it
3886 #.         doesn't run, but continues to wait for SIGCONT.
3887 #. type: Plain text
3888 #: build/C/man2/ptrace.2:1376
3889 msgid ""
3890 "If the tracee is running when the tracer wants to detach it, the usual "
3891 "solution is to send B<SIGSTOP> (using B<tgkill>(2), to make sure it goes to "
3892 "the correct thread), wait for the tracee to stop in signal-delivery-stop for "
3893 "B<SIGSTOP> and then detach it (suppressing B<SIGSTOP> injection).  A design "
3894 "bug is that this can race with concurrent B<SIGSTOP>s.  Another complication "
3895 "is that the tracee may enter other ptrace-stops and needs to be restarted "
3896 "and waited for again, until B<SIGSTOP> is seen.  Yet another complication is "
3897 "to be sure that the tracee is not already ptrace-stopped, because no signal "
3898 "delivery happens while it is\\(emnot even B<SIGSTOP>."
3899 msgstr ""
3900
3901 #. type: Plain text
3902 #: build/C/man2/ptrace.2:1384
3903 msgid ""
3904 "If the tracer dies, all tracees are automatically detached and restarted, "
3905 "unless they were in group-stop.  Handling of restart from group-stop is "
3906 "currently buggy, but the \"as planned\" behavior is to leave tracee stopped "
3907 "and waiting for B<SIGCONT>.  If the tracee is restarted from signal-delivery-"
3908 "stop, the pending signal is injected."
3909 msgstr ""
3910
3911 #. type: SS
3912 #: build/C/man2/ptrace.2:1384
3913 #, no-wrap
3914 msgid "execve(2) under ptrace"
3915 msgstr ""
3916
3917 #
3918 #.  clone(2) THREAD_CLONE says:
3919 #.      If  any  of the threads in a thread group performs an execve(2),
3920 #.      then all threads other than the thread group leader are terminated,
3921 #.      and the new program is executed in the thread group leader.
3922 #.  In kernel 3.1 sources, see fs/exec.c::de_thread()
3923 #. type: Plain text
3924 #: build/C/man2/ptrace.2:1403
3925 msgid ""
3926 "When one thread in a multithreaded process calls B<execve>(2), the kernel "
3927 "destroys all other threads in the process, and resets the thread ID of the "
3928 "execing thread to the thread group ID (process ID).  (Or, to put things "
3929 "another way, when a multithreaded process does an B<execve>(2), at "
3930 "completion of the call, it appears as though the B<execve>(2)  occurred in "
3931 "the thread group leader, regardless of which thread did the B<execve>(2).)  "
3932 "This resetting of the thread ID looks very confusing to tracers:"
3933 msgstr ""
3934
3935 #. type: IP
3936 #: build/C/man2/ptrace.2:1403 build/C/man2/ptrace.2:1413
3937 #: build/C/man2/ptrace.2:1421 build/C/man2/ptrace.2:1427
3938 #: build/C/man2/ptrace.2:1556
3939 #, no-wrap
3940 msgid "*"
3941 msgstr ""
3942
3943 #. type: Plain text
3944 #: build/C/man2/ptrace.2:1413
3945 msgid ""
3946 "All other threads stop in B<PTRACE_EVENT_EXIT> stop, if the "
3947 "B<PTRACE_O_TRACEEXIT> option was turned on.  Then all other threads except "
3948 "the thread group leader report death as if they exited via B<_exit>(2)  with "
3949 "exit code 0."
3950 msgstr ""
3951
3952 #. type: Plain text
3953 #: build/C/man2/ptrace.2:1421
3954 msgid ""
3955 "The execing tracee changes its thread ID while it is in the B<execve>(2).  "
3956 "(Remember, under ptrace, the \"pid\" returned from B<waitpid>(2), or fed "
3957 "into ptrace calls, is the tracee's thread ID.)  That is, the tracee's thread "
3958 "ID is reset to be the same as its process ID, which is the same as the "
3959 "thread group leader's thread ID."
3960 msgstr ""
3961
3962 #. type: Plain text
3963 #: build/C/man2/ptrace.2:1427
3964 msgid ""
3965 "Then a B<PTRACE_EVENT_EXEC> stop happens, if the B<PTRACE_O_TRACEEXEC> "
3966 "option was turned on."
3967 msgstr ""
3968
3969 #. type: Plain text
3970 #: build/C/man2/ptrace.2:1448
3971 msgid ""
3972 "If the thread group leader has reported its B<PTRACE_EVENT_EXIT> stop by "
3973 "this time, it appears to the tracer that the dead thread leader \"reappears "
3974 "from nowhere\".  (Note: the thread group leader does not report death via "
3975 "I<WIFEXITED(status)> until there is at least one other live thread.  This "
3976 "eliminates the possibility that the tracer will see it dying and then "
3977 "reappearing.)  If the thread group leader was still alive, for the tracer "
3978 "this may look as if thread group leader returns from a different system call "
3979 "than it entered, or even \"returned from a system call even though it was "
3980 "not in any system call\".  If the thread group leader was not traced (or was "
3981 "traced by a different tracer), then during B<execve>(2)  it will appear as "
3982 "if it has become a tracee of the tracer of the execing tracee."
3983 msgstr ""
3984
3985 #. type: Plain text
3986 #: build/C/man2/ptrace.2:1451
3987 msgid ""
3988 "All of the above effects are the artifacts of the thread ID change in the "
3989 "tracee."
3990 msgstr ""
3991
3992 #. type: Plain text
3993 #: build/C/man2/ptrace.2:1471
3994 msgid ""
3995 "The B<PTRACE_O_TRACEEXEC> option is the recommended tool for dealing with "
3996 "this situation.  First, it enables B<PTRACE_EVENT_EXEC> stop, which occurs "
3997 "before B<execve>(2)  returns.  In this stop, the tracer can use "
3998 "B<PTRACE_GETEVENTMSG> to retrieve the tracee's former thread ID.  (This "
3999 "feature was introduced in Linux 3.0).  Second, the B<PTRACE_O_TRACEEXEC> "
4000 "option disables legacy B<SIGTRAP> generation on B<execve>(2)."
4001 msgstr ""
4002
4003 #. type: Plain text
4004 #: build/C/man2/ptrace.2:1477
4005 msgid ""
4006 "When the tracer receives B<PTRACE_EVENT_EXEC> stop notification, it is "
4007 "guaranteed that except this tracee and the thread group leader, no other "
4008 "threads from the process are alive."
4009 msgstr ""
4010
4011 #. type: Plain text
4012 #: build/C/man2/ptrace.2:1485
4013 msgid ""
4014 "On receiving the B<PTRACE_EVENT_EXEC> stop notification, the tracer should "
4015 "clean up all its internal data structures describing the threads of this "
4016 "process, and retain only one data structure\\(emone which describes the "
4017 "single still running tracee, with"
4018 msgstr ""
4019
4020 #. type: Plain text
4021 #: build/C/man2/ptrace.2:1487
4022 #, no-wrap
4023 msgid "    thread ID == thread group ID == process ID.\n"
4024 msgstr ""
4025
4026 #. type: Plain text
4027 #: build/C/man2/ptrace.2:1491
4028 msgid "Example: two threads call B<execve>(2)  at the same time:"
4029 msgstr ""
4030
4031 #. type: Plain text
4032 #: build/C/man2/ptrace.2:1502
4033 #, no-wrap
4034 msgid ""
4035 "*** we get syscall-enter-stop in thread 1: **\n"
4036 "PID1 execve(\"/bin/foo\", \"foo\" E<lt>unfinished ...E<gt>\n"
4037 "*** we issue PTRACE_SYSCALL for thread 1 **\n"
4038 "*** we get syscall-enter-stop in thread 2: **\n"
4039 "PID2 execve(\"/bin/bar\", \"bar\" E<lt>unfinished ...E<gt>\n"
4040 "*** we issue PTRACE_SYSCALL for thread 2 **\n"
4041 "*** we get PTRACE_EVENT_EXEC for PID0, we issue PTRACE_SYSCALL **\n"
4042 "*** we get syscall-exit-stop for PID0: **\n"
4043 "PID0 E<lt>... execve resumedE<gt> )             = 0\n"
4044 msgstr ""
4045
4046 #. type: Plain text
4047 #: build/C/man2/ptrace.2:1525
4048 msgid ""
4049 "If the B<PTRACE_O_TRACEEXEC> option is I<not> in effect for the execing "
4050 "tracee, the kernel delivers an extra B<SIGTRAP> to the tracee after B<execve>"
4051 "(2)  returns.  This is an ordinary signal (similar to one which can be "
4052 "generated by I<kill -TRAP>), not a special kind of ptrace-stop.  Employing "
4053 "B<PTRACE_GETSIGINFO> for this signal returns I<si_code> set to 0 "
4054 "(I<SI_USER>).  This signal may be blocked by signal mask, and thus may be "
4055 "delivered (much) later."
4056 msgstr ""
4057
4058 #. type: Plain text
4059 #: build/C/man2/ptrace.2:1544
4060 msgid ""
4061 "Usually, the tracer (for example, B<strace>(1))  would not want to show this "
4062 "extra post-execve B<SIGTRAP> signal to the user, and would suppress its "
4063 "delivery to the tracee (if B<SIGTRAP> is set to B<SIG_DFL>, it is a killing "
4064 "signal).  However, determining I<which> B<SIGTRAP> to suppress is not easy.  "
4065 "Setting the B<PTRACE_O_TRACEEXEC> option and thus suppressing this extra "
4066 "B<SIGTRAP> is the recommended approach."
4067 msgstr ""
4068
4069 #. type: SS
4070 #: build/C/man2/ptrace.2:1544
4071 #, no-wrap
4072 msgid "Real parent"
4073 msgstr ""
4074
4075 #. type: Plain text
4076 #: build/C/man2/ptrace.2:1551
4077 msgid ""
4078 "The ptrace API (ab)uses the standard UNIX parent/child signaling over "
4079 "B<waitpid>(2).  This used to cause the real parent of the process to stop "
4080 "receiving several kinds of B<waitpid>(2)  notifications when the child "
4081 "process is traced by some other process."
4082 msgstr ""
4083
4084 #. type: Plain text
4085 #: build/C/man2/ptrace.2:1554
4086 msgid ""
4087 "Many of these bugs have been fixed, but as of Linux 2.6.38 several still "
4088 "exist; see BUGS below."
4089 msgstr ""
4090
4091 #. type: Plain text
4092 #: build/C/man2/ptrace.2:1556
4093 msgid "As of Linux 2.6.38, the following is believed to work correctly:"
4094 msgstr ""
4095
4096 #. type: Plain text
4097 #: build/C/man2/ptrace.2:1564
4098 msgid ""
4099 "exit/death by signal is reported first to the tracer, then, when the tracer "
4100 "consumes the B<waitpid>(2)  result, to the real parent (to the real parent "
4101 "only when the whole multithreaded process exits).  If the tracer and the "
4102 "real parent are the same process, the report is sent only once."
4103 msgstr ""
4104
4105 #. type: Plain text
4106 #: build/C/man2/ptrace.2:1578
4107 #, fuzzy
4108 #| msgid ""
4109 #| "On success, B<PTRACE_PEEK*> requests return the requested data, while "
4110 #| "other requests return zero.  On error, all requests return -1, and "
4111 #| "I<errno> is set appropriately.  Since the value returned by a successful "
4112 #| "B<PTRACE_PEEK*> request may be -1, the caller must check I<errno> after "
4113 #| "such requests to determine whether or not an error occurred."
4114 msgid ""
4115 "On success, B<PTRACE_PEEK*> requests return the requested data, while other "
4116 "requests return zero.  On error, all requests return -1, and I<errno> is set "
4117 "appropriately.  Since the value returned by a successful B<PTRACE_PEEK*> "
4118 "request may be -1, the caller must clear I<errno> before the call, and then "
4119 "check it afterward to determine whether or not an error occurred."
4120 msgstr ""
4121 "成功すると、 B<PTRACE_PEEK*> の場合は要求したデータを返し、 それ以外の場合は "
4122 "0 を返す。 エラーの場合は -1 を返し、 I<errno> が適切に設定される。 "
4123 "B<PTRACE_PEEK*> が成功して返す値も -1 になることがあるため、 そのような要求"
4124 "の場合には、呼び出し元は I<errno> を調べ、エラーか発生したのかどうかを判断し"
4125 "なければならない。"
4126
4127 #. type: Plain text
4128 #: build/C/man2/ptrace.2:1582
4129 msgid ""
4130 "(i386 only) There was an error with allocating or freeing a debug register."
4131 msgstr "(i386 のみ) デバッグレジスタの確保または解放でエラーが発生した。"
4132
4133 #. type: Plain text
4134 #: build/C/man2/ptrace.2:1593
4135 #, fuzzy
4136 #| msgid ""
4137 #| "There was an attempt to read from or write to an invalid area in the "
4138 #| "parent's or child's memory, probably because the area wasn't mapped or "
4139 #| "accessible.  Unfortunately, under Linux, different variations of this "
4140 #| "fault will return B<EIO> or B<EFAULT> more or less arbitrarily."
4141 msgid ""
4142 "There was an attempt to read from or write to an invalid area in the "
4143 "tracer's or the tracee's memory, probably because the area wasn't mapped or "
4144 "accessible.  Unfortunately, under Linux, different variations of this fault "
4145 "will return B<EIO> or B<EFAULT> more or less arbitrarily."
4146 msgstr ""
4147 "親プロセスまたは子プロセスのメモリの不正な領域に読み書きしようとした。 おそら"
4148 "くその領域がマッピングされていないか、 その領域へのアクセスが許されていないか"
4149 "である。 不運なことに、Linux ではこのようなエラーの場合、多かれ少なかれ 恣意"
4150 "的に B<EIO> を返したり B<EFAULT> を返したりすることがある。"
4151
4152 #. type: Plain text
4153 #: build/C/man2/ptrace.2:1596
4154 msgid "An attempt was made to set an invalid option."
4155 msgstr "不正なオプションを設定しようとした。"
4156
4157 #. type: Plain text
4158 #: build/C/man2/ptrace.2:1603
4159 #, fuzzy
4160 #| msgid ""
4161 #| "I<request> is invalid, or an attempt was made to read from or write to an "
4162 #| "invalid area in the parent's or child's memory, or there was a word-"
4163 #| "alignment violation, or an invalid signal was specified during a restart "
4164 #| "request."
4165 msgid ""
4166 "I<request> is invalid, or an attempt was made to read from or write to an "
4167 "invalid area in the tracer's or the tracee's memory, or there was a word-"
4168 "alignment violation, or an invalid signal was specified during a restart "
4169 "request."
4170 msgstr ""
4171 "I<request> が不正である。 または、親プロセスまたは子プロセスのメモリの 不正な"
4172 "領域に読み書きしようとした。 または、ワード境界違反があった。 または、実行再"
4173 "開の要求で不正なシグナルを指定した。"
4174
4175 #. type: Plain text
4176 #: build/C/man2/ptrace.2:1616
4177 #, fuzzy
4178 #| msgid ""
4179 #| "The specified process cannot be traced.  This could be because the parent "
4180 #| "has insufficient privileges (the required capability is "
4181 #| "B<CAP_SYS_PTRACE>); unprivileged processes cannot trace processes that "
4182 #| "they cannot send signals to or those running set-user-ID/set-group-ID "
4183 #| "programs, for obvious reasons.  Alternatively, the process may already be "
4184 #| "being traced, or be B<init>(8)  (PID 1)."
4185 msgid ""
4186 "The specified process cannot be traced.  This could be because the tracer "
4187 "has insufficient privileges (the required capability is B<CAP_SYS_PTRACE>); "
4188 "unprivileged processes cannot trace processes that they cannot send signals "
4189 "to or those running set-user-ID/set-group-ID programs, for obvious reasons.  "
4190 "Alternatively, the process may already be being traced, or (on kernels "
4191 "before 2.6.26) be B<init>(8)  (PID 1)."
4192 msgstr ""
4193 "指定したプロセスをトレースすることができない。これは親プロセスが 必要な権限 "
4194 "(必要なケーパビリティは B<CAP_SYS_PTRACE>)  を持っていないことが原因の場合が"
4195 "ある。 分かりやすい理由を挙げるなら、 非特権プロセスはシグナルを送ることがで"
4196 "きないプロセスをトレースできないし、 set-user-ID/set-group-ID プログラムを実"
4197 "行しているプロセスはトレースできない。 または、プロセスはすでにトレース中であ"
4198 "る、 または B<init>(8)  プロセス (PID が 1) である。"
4199
4200 #. type: TP
4201 #: build/C/man2/ptrace.2:1616 build/C/man2/quotactl.2:459
4202 #: build/C/man2/quotactl.2:502
4203 #, no-wrap
4204 msgid "B<ESRCH>"
4205 msgstr "B<ESRCH>"
4206
4207 #. type: Plain text
4208 #: build/C/man2/ptrace.2:1621
4209 #, fuzzy
4210 #| msgid ""
4211 #| "The specified process does not exist, or is not currently being traced by "
4212 #| "the caller, or is not stopped (for requests that require that)."
4213 msgid ""
4214 "The specified process does not exist, or is not currently being traced by "
4215 "the caller, or is not stopped (for requests that require a stopped tracee)."
4216 msgstr ""
4217 "指定したプロセスが存在しない。 または、指定したプロセスは呼び出したプロセス"
4218 "が 現在トレース中の子プロセスではない。 または、指定したプロセスが停止してい"
4219 "ない (停止していることが必要な要求の場合)。"
4220
4221 #. type: Plain text
4222 #: build/C/man2/ptrace.2:1623
4223 msgid "SVr4, 4.3BSD."
4224 msgstr "SVr4, 4.3BSD."
4225
4226 #. type: Plain text
4227 #: build/C/man2/ptrace.2:1636
4228 msgid ""
4229 "Although arguments to B<ptrace>()  are interpreted according to the "
4230 "prototype given, glibc currently declares B<ptrace>()  as a variadic "
4231 "function with only the I<request> argument fixed.  This means that unneeded "
4232 "trailing arguments may be omitted, though doing so makes use of undocumented "
4233 "B<gcc>(1)  behavior."
4234 msgstr ""
4235 "B<ptrace>()  の引き数は上のようなプロトタイプに基づいて解釈されるが、 glibc "
4236 "では、現在のところ B<ptrace>()  は I<request> 引き数だけが固定の可変長引き数"
4237 "関数として 宣言されている。 これは必要なければ残りの引き数は省略可能であるこ"
4238 "とを意味するが、 それは B<gcc>(1)  の明文化されていない動作を利用していること"
4239 "になる。"
4240
4241 #.  See commit 00cd5c37afd5f431ac186dd131705048c0a11fdb
4242 #. type: Plain text
4243 #: build/C/man2/ptrace.2:1641
4244 #, fuzzy
4245 #| msgid "B<init>(8), the process with PID 1, may not be traced."
4246 msgid ""
4247 "In Linux kernels before 2.6.26, B<init>(8), the process with PID 1, may not "
4248 "be traced."
4249 msgstr "B<init>(8)  すなわち PID が 1 のプロセスはトレースすることができない。"
4250
4251 #.  See http://lkml.org/lkml/2008/5/8/375
4252 #. type: Plain text
4253 #: build/C/man2/ptrace.2:1648
4254 #, fuzzy
4255 #| msgid ""
4256 #| "The layout of the contents of memory and the USER area are quite OS- and "
4257 #| "architecture-specific.  The offset supplied, and the data returned, might "
4258 #| "not entirely match with the definition of I<struct user>."
4259 msgid ""
4260 "The layout of the contents of memory and the USER area are quite operating-"
4261 "system- and architecture-specific.  The offset supplied, and the data "
4262 "returned, might not entirely match with the definition of I<struct user>."
4263 msgstr ""
4264 "メモリや USER 領域の内容や配置は OS ごと、アーキテクチャごとに 非常に依存す"
4265 "る。 オフセットが指定された場合、返されるデータは I<struct user> の定義と完全"
4266 "に一致しないこともありえる。"
4267
4268 #. type: Plain text
4269 #: build/C/man2/ptrace.2:1651
4270 #, fuzzy
4271 #| msgid ""
4272 #| "The size of a \"word\" is determined by the OS variant (e.g., for 32-bit "
4273 #| "Linux it is 32 bits, etc.)."
4274 msgid ""
4275 "The size of a \"word\" is determined by the operating-system variant (e.g., "
4276 "for 32-bit Linux it is 32 bits, etc.)."
4277 msgstr ""
4278 "「ワード (word) 」の大きさは OS によって決まる。 (例えば、32 ビットの Linux "
4279 "では 32 ビットである、など。)"
4280
4281 #. type: Plain text
4282 #: build/C/man2/ptrace.2:1659
4283 #, fuzzy
4284 #| msgid ""
4285 #| "This page documents the way the B<ptrace>()  call works currently in "
4286 #| "Linux.  Its behavior differs noticeably on other flavors of UNIX.  In any "
4287 #| "case, use of B<ptrace>()  is highly OS- and architecture-specific."
4288 msgid ""
4289 "This page documents the way the B<ptrace>()  call works currently in Linux.  "
4290 "Its behavior differs noticeably on other flavors of UNIX.  In any case, use "
4291 "of B<ptrace>()  is highly specific to the operating system and architecture."
4292 msgstr ""
4293 "このマニュアルは現在の Linux における B<ptrace>()  コールの動作について記述し"
4294 "ている。他の UNIX では その動作は著しく異なる。 いかなる場合も B<ptrace>()  "
4295 "を使うと OS やアーキテクチャに非常に依存したものになる。"
4296
4297 #. type: Plain text
4298 #: build/C/man2/ptrace.2:1670
4299 #, fuzzy
4300 #| msgid ""
4301 #| "On hosts with 2.6 kernel headers, B<PTRACE_SETOPTIONS> is declared with a "
4302 #| "different value than the one for 2.4.  This leads to applications "
4303 #| "compiled with such headers failing when run on 2.4 kernels.  This can be "
4304 #| "worked around by redefining B<PTRACE_SETOPTIONS> to "
4305 #| "B<PTRACE_OLDSETOPTIONS>, if that is defined."
4306 msgid ""
4307 "On hosts with 2.6 kernel headers, B<PTRACE_SETOPTIONS> is declared with a "
4308 "different value than the one for 2.4.  This leads to applications compiled "
4309 "with 2.6 kernel headers failing when run on 2.4 kernels.  This can be worked "
4310 "around by redefining B<PTRACE_SETOPTIONS> to B<PTRACE_OLDSETOPTIONS>, if "
4311 "that is defined."
4312 msgstr ""
4313 "カーネル 2.6 のヘッダがインストールされたホストでは、 B<PTRACE_SETOPTIONS> は"
4314 "カーネル 2.4 のヘッダとは異なる値で宣言される。 このため、カーネル 2.6 のヘッ"
4315 "ダでコンパイルされたアプリケーションは カーネル 2.4 では正しく動作しない。 こ"
4316 "の問題は、 B<PTRACE_SETOPTIONS> が定義されていた際は、 B<PTRACE_SETOPTIONS> "
4317 "を B<PTRACE_OLDSETOPTIONS> に定義し直すことで対処できる。"
4318
4319 #. type: Plain text
4320 #: build/C/man2/ptrace.2:1673
4321 msgid ""
4322 "Group-stop notifications are sent to the tracer, but not to real parent.  "
4323 "Last confirmed on 2.6.38.6."
4324 msgstr ""
4325
4326 #.  Note from Denys Vlasenko:
4327 #.      Here "exits" means any kind of death - _exit, exit_group,
4328 #.      signal death. Signal death and exit_group cases are trivial,
4329 #.      though: since signal death and exit_group kill all other threads
4330 #.      too, "until all other threads exit" thing happens rather soon
4331 #.      in these cases. Therefore, only _exit presents observably
4332 #.      puzzling behavior to ptrace users: thread leader _exit's,
4333 #.      but WIFEXITED isn't reported! We are trying to explain here
4334 #.      why it is so.
4335 #.   FIXME: ^^^ need to test/verify this scenario
4336 #. type: Plain text
4337 #: build/C/man2/ptrace.2:1704
4338 msgid ""
4339 "If a thread group leader is traced and exits by calling B<_exit>(2), a "
4340 "B<PTRACE_EVENT_EXIT> stop will happen for it (if requested), but the "
4341 "subsequent B<WIFEXITED> notification will not be delivered until all other "
4342 "threads exit.  As explained above, if one of other threads calls B<execve>"
4343 "(2), the death of the thread group leader will I<never> be reported.  If the "
4344 "execed thread is not traced by this tracer, the tracer will never know that "
4345 "B<execve>(2)  happened.  One possible workaround is to B<PTRACE_DETACH> the "
4346 "thread group leader instead of restarting it in this case.  Last confirmed "
4347 "on 2.6.38.6."
4348 msgstr ""
4349
4350 #. type: Plain text
4351 #: build/C/man2/ptrace.2:1714
4352 msgid ""
4353 "A B<SIGKILL> signal may still cause a B<PTRACE_EVENT_EXIT> stop before "
4354 "actual signal death.  This may be changed in the future; B<SIGKILL> is meant "
4355 "to always immediately kill tasks even under ptrace.  Last confirmed on "
4356 "2.6.38.6."
4357 msgstr ""
4358
4359 #. type: Plain text
4360 #: build/C/man2/ptrace.2:1730
4361 msgid ""
4362 "Some system calls return with B<EINTR> if a signal was sent to a tracee, but "
4363 "delivery was suppressed by the tracer.  (This is very typical operation: it "
4364 "is usually done by debuggers on every attach, in order to not introduce a "
4365 "bogus B<SIGSTOP>).  As of Linux 3.2.9, the following system calls are "
4366 "affected (this list is likely incomplete): B<epoll_wait>(2), and B<read>(2)  "
4367 "from an B<inotify>(7)  file descriptor."
4368 msgstr ""
4369
4370 #. type: Plain text
4371 #: build/C/man2/ptrace.2:1743
4372 #, fuzzy
4373 #| msgid ""
4374 #| "B<gdb>(1), B<strace>(1), B<execve>(2), B<fork>(2), B<signal>(2), B<wait>"
4375 #| "(2), B<exec>(3), B<capabilities>(7)"
4376 msgid ""
4377 "B<gdb>(1), B<strace>(1), B<clone>(2), B<execve>(2), B<fork>(2), B<gettid>"
4378 "(2), B<sigaction>(2), B<tgkill>(2), B<vfork>(2), B<waitpid>(2), B<exec>(3), "
4379 "B<capabilities>(7), B<signal>(7)"
4380 msgstr ""
4381 "B<gdb>(1), B<strace>(1), B<execve>(2), B<fork>(2), B<signal>(2), B<wait>(2), "
4382 "B<exec>(3), B<capabilities>(7)"
4383
4384 #. type: TH
4385 #: build/C/man2/quotactl.2:25
4386 #, no-wrap
4387 msgid "QUOTACTL"
4388 msgstr "QUOTACTL"
4389
4390 #. type: TH
4391 #: build/C/man2/quotactl.2:25
4392 #, fuzzy, no-wrap
4393 #| msgid "2010-02-15"
4394 msgid "2010-06-16"
4395 msgstr "2010-02-15"
4396
4397 #. type: Plain text
4398 #: build/C/man2/quotactl.2:28
4399 #, fuzzy
4400 #| msgid "quotactl - manipulate disk quota"
4401 msgid "quotactl - manipulate disk quotas"
4402 msgstr "quotactl - ディスク quota を操作する"
4403
4404 #. type: Plain text
4405 #: build/C/man2/quotactl.2:32
4406 #, fuzzy, no-wrap
4407 #| msgid ""
4408 #| "B<#include E<lt>linux/futex.hE<gt>>\n"
4409 #| "B<#include E<lt>sys/time.hE<gt>>\n"
4410 msgid ""
4411 "B<#include E<lt>sys/quota.hE<gt>>\n"
4412 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
4413 msgstr ""
4414 "B<#include E<lt>linux/futex.hE<gt>>\n"
4415 "B<#include E<lt>sys/time.hE<gt>>\n"
4416
4417 #. type: Plain text
4418 #: build/C/man2/quotactl.2:35
4419 #, no-wrap
4420 msgid "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
4421 msgstr "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
4422
4423 #. type: Plain text
4424 #: build/C/man2/quotactl.2:47
4425 #, fuzzy
4426 #| msgid ""
4427 #| "The quota system defines for each user and/or group a soft limit and a "
4428 #| "hard limit bounding the amount of disk space that can be used on a given "
4429 #| "file system.  The hard limit cannot be crossed.  The soft limit can be "
4430 #| "crossed, but warnings will ensue.  Moreover, the user cannot be above the "
4431 #| "soft limit for more than one week (by default)  at a time: after this "
4432 #| "week the soft limit counts as hard limit."
4433 msgid ""
4434 "The quota system can be used to set per-user and per-group limits on the "
4435 "amount of disk space used on a file system.  For each user and/or group, a "
4436 "soft limit and a hard limit can be set for each file system.  The hard limit "
4437 "can't be exceeded.  The soft limit can be exceeded, but warnings will "
4438 "ensue.  Moreover, the user can't exceed the soft limit for more than one "
4439 "week (by default) at a time; after this time, the soft limit counts as a "
4440 "hard limit."
4441 msgstr ""
4442 "quota システムは、各々のユーザ及び/またはグループに対して、 ソフト・リミット"
4443 "及びハード・リミットを定める。これはあるファイル・システムで 使用する事が出来"
4444 "るディスク容量を制限する。 ハード・リミットは超過することは出来ない。 ソフ"
4445 "ト・リミットは超過する事が出来るが、警告が発せられる。 更に、(デフォルトで"
4446 "は) 一週間以上ソフト・リミットを超過したままに しておく事はできない: 一週間経"
4447 "過した後はハード・リミットを超過したと みなされる。"
4448
4449 #. type: Plain text
4450 #: build/C/man2/quotactl.2:72
4451 #, fuzzy
4452 #| msgid ""
4453 #| "The B<quotactl>()  system call manipulates these quota.  Its first "
4454 #| "argument is of the form B<QCMD(>I<subcmd>B<,>I<type>B<)> where I<type> is "
4455 #| "either B<USRQUOTA> or B<GRPQUOTA> (for user quota and group quota, "
4456 #| "respectively), and I<subcmd> is described below."
4457 msgid ""
4458 "The B<quotactl>()  call manipulates disk quotas.  The I<cmd> argument "
4459 "indicates a command to be applied to the user or group ID specified in "
4460 "I<id>.  To initialize the I<cmd> argument, use the I<QCMD(subcmd, type)> "
4461 "macro.  The I<type> value is either B<USRQUOTA>, for user quotas, or "
4462 "B<GRPQUOTA>, for group quotas.  The I<subcmd> value is described below."
4463 msgstr ""
4464 "B<quotactl>()  システムコールはこれらの quota に対する操作を行なう。 最初の引"
4465 "き数は B<QCMD(>I<subcmd>B<,>I<type>B<)> という形式である。 I<type> には、ユー"
4466 "ザー quota については B<USRQUOTA> を、グループ quota については B<GRPQUOTA> "
4467 "を指定する。 I<subcmd> は以下で説明する。"
4468
4469 #. type: Plain text
4470 #: build/C/man2/quotactl.2:77
4471 msgid ""
4472 "The I<special> argument is a pointer to a null-terminated string containing "
4473 "the pathname of the (mounted) block special device for the file system being "
4474 "manipulated."
4475 msgstr ""
4476
4477 #. type: Plain text
4478 #: build/C/man2/quotactl.2:85
4479 msgid ""
4480 "The I<addr> argument is the address of an optional, command-specific, data "
4481 "structure that is copied in or out of the system.  The interpretation of "
4482 "I<addr> is given with each command below."
4483 msgstr ""
4484
4485 #. type: Plain text
4486 #: build/C/man2/quotactl.2:89
4487 #, fuzzy
4488 #| msgid "The I<subcmd> is one of"
4489 msgid "The I<subcmd> value is one of the following:"
4490 msgstr "I<subcmd> は以下のいずれかである"
4491
4492 #. type: TP
4493 #: build/C/man2/quotactl.2:89
4494 #, no-wrap
4495 msgid "B<Q_QUOTAON>"
4496 msgstr "B<Q_QUOTAON>"
4497
4498 #. type: Plain text
4499 #: build/C/man2/quotactl.2:96
4500 msgid ""
4501 "Turn on quotas for a file system.  The I<id> argument is the identification "
4502 "number of the quota format to be used.  Currently, there are three supported "
4503 "quota formats:"
4504 msgstr ""
4505
4506 #. type: TP
4507 #: build/C/man2/quotactl.2:97
4508 #, no-wrap
4509 msgid "B<QFMT_VFS_OLD>"
4510 msgstr ""
4511
4512 #. type: Plain text
4513 #: build/C/man2/quotactl.2:100
4514 msgid "The original quota format."
4515 msgstr ""
4516
4517 #. type: TP
4518 #: build/C/man2/quotactl.2:100
4519 #, no-wrap
4520 msgid "B<QFMT_VFS_V0>"
4521 msgstr ""
4522
4523 #. type: Plain text
4524 #: build/C/man2/quotactl.2:104
4525 msgid ""
4526 "The standard VFS v0 quota format, which can handle 32-bit UIDs and GIDs and "
4527 "quota limits up to 2^42 bytes and 2^32 inodes."
4528 msgstr ""
4529
4530 #. type: TP
4531 #: build/C/man2/quotactl.2:104
4532 #, no-wrap
4533 msgid "B<QFMT_VFS_V1>"
4534 msgstr ""
4535
4536 #. type: Plain text
4537 #: build/C/man2/quotactl.2:108
4538 msgid ""
4539 "A quota format that can handle 32-bit UIDs and GIDs and quota limits of 2^64 "
4540 "bytes and 2^64 inodes."
4541 msgstr ""
4542
4543 #. type: Plain text
4544 #: build/C/man2/quotactl.2:119
4545 msgid ""
4546 "The I<addr> argument points to the pathname of a file containing the quotas "
4547 "for the file system.  The quota file must exist; it is normally created with "
4548 "the B<quotacheck>(8)  program.  This operation requires privilege "
4549 "(B<CAP_SYS_ADMIN>)."
4550 msgstr ""
4551
4552 #. type: TP
4553 #: build/C/man2/quotactl.2:119
4554 #, no-wrap
4555 msgid "B<Q_QUOTAOFF>"
4556 msgstr "B<Q_QUOTAOFF>"
4557
4558 #. type: Plain text
4559 #: build/C/man2/quotactl.2:129
4560 msgid ""
4561 "Turn off quotas for a file system.  The I<addr> and I<id> arguments are "
4562 "ignored.  This operation requires privilege (B<CAP_SYS_ADMIN>)."
4563 msgstr ""
4564
4565 #. type: TP
4566 #: build/C/man2/quotactl.2:129
4567 #, no-wrap
4568 msgid "B<Q_GETQUOTA>"
4569 msgstr "B<Q_GETQUOTA>"
4570
4571 #. type: Plain text
4572 #: build/C/man2/quotactl.2:140
4573 #, fuzzy
4574 #| msgid ""
4575 #| "Get limits and current usage of disk space.  The I<addr> argument is a "
4576 #| "pointer to a dqblk structure (defined in I<E<lt>sys/quota.hE<gt>>)."
4577 msgid ""
4578 "Get disk quota limits and current usage for user or group I<id>.  The "
4579 "I<addr> argument is a pointer to a I<dqblk> structure defined in I<E<lt>sys/"
4580 "quota.hE<gt>> as follows:"
4581 msgstr ""
4582 "ディスク使用量の制限値と現在の使用量を得る。 I<addr> 引き数は (I<E<lt>sys/"
4583 "quota.hE<gt>> で定義された) dqblk 構造体を指すポインタである。"
4584
4585 #. type: Plain text
4586 #: build/C/man2/quotactl.2:145 build/C/man2/quotactl.2:232
4587 #, no-wrap
4588 msgid ""
4589 "/* uint64_t is an unsigned 64-bit integer;\n"
4590 "   uint32_t is an unsigned 32-bit integer */\n"
4591 msgstr ""
4592
4593 #. type: Plain text
4594 #: build/C/man2/quotactl.2:165
4595 #, no-wrap
4596 msgid ""
4597 "struct dqblk {          /* Definition since Linux 2.4.22 */\n"
4598 "    uint64_t dqb_bhardlimit;   /* absolute limit on disk\n"
4599 "                                  quota blocks alloc */\n"
4600 "    uint64_t dqb_bsoftlimit;   /* preferred limit on\n"
4601 "                                  disk quota blocks */\n"
4602 "    uint64_t dqb_curspace;     /* current quota block\n"
4603 "                                  count */\n"
4604 "    uint64_t dqb_ihardlimit;   /* maximum number of\n"
4605 "                                  allocated inodes */\n"
4606 "    uint64_t dqb_isoftlimit;   /* preferred inode limit */\n"
4607 "    uint64_t dqb_curinodes;    /* current number of\n"
4608 "                                  allocated inodes */\n"
4609 "    uint64_t dqb_btime;        /* time limit for excessive\n"
4610 "                                  disk use */\n"
4611 "    uint64_t dqb_itime;        /* time limit for excessive\n"
4612 "                                  files */\n"
4613 "    uint32_t dqb_valid;        /* bit mask of QIF_*\n"
4614 "                                  constants */\n"
4615 "};\n"
4616 msgstr ""
4617
4618 #. type: Plain text
4619 #: build/C/man2/quotactl.2:168
4620 #, no-wrap
4621 msgid ""
4622 "/* Flags in dqb_valid that indicate which fields in\n"
4623 "   dqblk structure are valid. */\n"
4624 msgstr ""
4625
4626 #. type: Plain text
4627 #: build/C/man2/quotactl.2:179
4628 #, no-wrap
4629 msgid ""
4630 "#define QIF_BLIMITS   1\n"
4631 "#define QIF_SPACE     2\n"
4632 "#define QIF_ILIMITS   4\n"
4633 "#define QIF_INODES    8\n"
4634 "#define QIF_BTIME     16\n"
4635 "#define QIF_ITIME     32\n"
4636 "#define QIF_LIMITS    (QIF_BLIMITS | QIF_ILIMITS)\n"
4637 "#define QIF_USAGE     (QIF_SPACE | QIF_INODES)\n"
4638 "#define QIF_TIMES     (QIF_BTIME | QIF_ITIME)\n"
4639 "#define QIF_ALL       (QIF_LIMITS | QIF_USAGE | QIF_TIMES)\n"
4640 msgstr ""
4641
4642 #. type: Plain text
4643 #: build/C/man2/quotactl.2:196
4644 msgid ""
4645 "The I<dqb_valid> field is a bit mask that is set to indicate the entries in "
4646 "the I<dqblk> structure that are valid.  Currently, the kernel fills in all "
4647 "entries of the I<dqblk> structure and marks them as valid in the "
4648 "I<dqb_valid> field.  Unprivileged users may retrieve only their own quotas; "
4649 "a privileged user (B<CAP_SYS_ADMIN>)  can retrieve the quotas of any user."
4650 msgstr ""
4651
4652 #. type: TP
4653 #: build/C/man2/quotactl.2:196
4654 #, no-wrap
4655 msgid "B<Q_SETQUOTA>"
4656 msgstr "B<Q_SETQUOTA>"
4657
4658 #. type: Plain text
4659 #: build/C/man2/quotactl.2:216
4660 msgid ""
4661 "Set quota information for user or group I<id>, using the information "
4662 "supplied in the I<dqblk> structure pointed to by I<addr>.  The I<dqb_valid> "
4663 "field of the I<dqblk> structure indicates which entries in the structure "
4664 "have been set by the caller.  This operation supersedes the B<Q_SETQLIM> and "
4665 "B<Q_SETUSE> operations in the previous quota interfaces.  This operation "
4666 "requires privilege (B<CAP_SYS_ADMIN>)."
4667 msgstr ""
4668
4669 #. type: TP
4670 #: build/C/man2/quotactl.2:216
4671 #, fuzzy, no-wrap
4672 #| msgid "B<Q_GETQUOTA>"
4673 msgid "B<Q_GETINFO>"
4674 msgstr "B<Q_GETQUOTA>"
4675
4676 #. type: Plain text
4677 #: build/C/man2/quotactl.2:227
4678 #, fuzzy
4679 #| msgid ""
4680 #| "Get limits and current usage of disk space.  The I<addr> argument is a "
4681 #| "pointer to a dqblk structure (defined in I<E<lt>sys/quota.hE<gt>>)."
4682 msgid ""
4683 "Get information (like grace times) about quotafile.  The I<addr> argument "
4684 "should be a pointer to a I<dqinfo> structure.  This structure is defined in "
4685 "I<E<lt>sys/quota.hE<gt>> as follows:"
4686 msgstr ""
4687 "ディスク使用量の制限値と現在の使用量を得る。 I<addr> 引き数は (I<E<lt>sys/"
4688 "quota.hE<gt>> で定義された) dqblk 構造体を指すポインタである。"
4689
4690 #. type: Plain text
4691 #: build/C/man2/quotactl.2:236
4692 #, no-wrap
4693 msgid ""
4694 "struct dqinfo {         /* Defined since kernel 2.4.22 */\n"
4695 "    uint64_t dqi_bgrace;    /* Time before block soft limit\n"
4696 "                               becomes hard limit */\n"
4697 msgstr ""
4698
4699 #. type: Plain text
4700 #: build/C/man2/quotactl.2:243
4701 #, no-wrap
4702 msgid ""
4703 "    uint64_t dqi_igrace;    /* Time before inode soft limit\n"
4704 "                               becomes hard limit */\n"
4705 "    uint32_t dqi_flags;     /* Flags for quotafile\n"
4706 "                               (DQF_*) */\n"
4707 "    uint32_t dqi_valid;\n"
4708 "};\n"
4709 msgstr ""
4710
4711 #. type: Plain text
4712 #: build/C/man2/quotactl.2:245
4713 #, no-wrap
4714 msgid "/* Bits for dqi_flags */\n"
4715 msgstr ""
4716
4717 #. type: Plain text
4718 #: build/C/man2/quotactl.2:247
4719 #, no-wrap
4720 msgid "/* Quota format QFMT_VFS_OLD */\n"
4721 msgstr ""
4722
4723 #. type: Plain text
4724 #: build/C/man2/quotactl.2:249
4725 #, no-wrap
4726 msgid "#define V1_DQF_RSQUASH\t1   /* Root squash enabled */\n"
4727 msgstr ""
4728
4729 #. type: Plain text
4730 #: build/C/man2/quotactl.2:251
4731 #, no-wrap
4732 msgid "/* Other quota formats have no dqi_flags bits defined */\n"
4733 msgstr ""
4734
4735 #. type: Plain text
4736 #: build/C/man2/quotactl.2:254
4737 #, no-wrap
4738 msgid ""
4739 "/* Flags in dqi_valid that indicate which fields in\n"
4740 "   dqinfo structure are valid. */\n"
4741 msgstr ""
4742
4743 #. type: Plain text
4744 #: build/C/man2/quotactl.2:259
4745 #, no-wrap
4746 msgid ""
4747 "# define IIF_BGRACE\t1\n"
4748 "# define IIF_IGRACE\t2\n"
4749 "# define IIF_FLAGS\t4\n"
4750 "# define IIF_ALL\t(IIF_BGRACE | IIF_IGRACE | IIF_FLAGS)\n"
4751 msgstr ""
4752
4753 #. type: Plain text
4754 #: build/C/man2/quotactl.2:275
4755 msgid ""
4756 "The I<dqi_valid> field in the I<dqinfo> structure indicates the entries in "
4757 "the structure that are valid.  Currently, the kernel fills in all entries of "
4758 "the I<dqinfo> structure and marks them all as valid in the I<dqi_valid> "
4759 "field.  The I<id> argument is ignored."
4760 msgstr ""
4761
4762 #. type: TP
4763 #: build/C/man2/quotactl.2:275
4764 #, fuzzy, no-wrap
4765 #| msgid "B<Q_SETQLIM>"
4766 msgid "B<Q_SETINFO>"
4767 msgstr "B<Q_SETQLIM>"
4768
4769 #. type: Plain text
4770 #: build/C/man2/quotactl.2:299
4771 msgid ""
4772 "Set information about quotafile.  The I<addr> argument should be a pointer "
4773 "to a I<dqinfo> structure.  The I<dqi_valid> field of the I<dqinfo> structure "
4774 "indicates the entries in the structure that have been set by the caller.  "
4775 "This operation supersedes the B<Q_SETGRACE> and B<Q_SETFLAGS> operations in "
4776 "the previous quota interfaces.  The I<id> argument is ignored.  This "
4777 "operation requires privilege (B<CAP_SYS_ADMIN>)."
4778 msgstr ""
4779
4780 #. type: TP
4781 #: build/C/man2/quotactl.2:299
4782 #, fuzzy, no-wrap
4783 #| msgid "B<Q_GETQUOTA>"
4784 msgid "B<Q_GETFMT>"
4785 msgstr "B<Q_GETQUOTA>"
4786
4787 #. type: Plain text
4788 #: build/C/man2/quotactl.2:306
4789 msgid ""
4790 "Get quota format used on the specified file system.  The I<addr> argument "
4791 "should be a pointer to a 4-byte buffer where the format number will be "
4792 "stored."
4793 msgstr ""
4794
4795 #. type: TP
4796 #: build/C/man2/quotactl.2:306
4797 #, no-wrap
4798 msgid "B<Q_SYNC>"
4799 msgstr "B<Q_SYNC>"
4800
4801 #. type: Plain text
4802 #: build/C/man2/quotactl.2:317
4803 msgid ""
4804 "Update the on-disk copy of quota usages for a file system.  If I<special> is "
4805 "NULL, then all file systems with active quotas are sync'ed.  The I<addr> and "
4806 "I<id> arguments are ignored."
4807 msgstr ""
4808
4809 #. type: TP
4810 #: build/C/man2/quotactl.2:317
4811 #, no-wrap
4812 msgid "B<Q_GETSTATS>"
4813 msgstr "B<Q_GETSTATS>"
4814
4815 #.  Q_GETSTATS was removed in kernel 2.4.22.
4816 #. type: Plain text
4817 #: build/C/man2/quotactl.2:337
4818 msgid ""
4819 "Get statistics and other generic information about the quota subsystem.  The "
4820 "I<addr> argument should be a pointer to a I<dqstats> structure in which data "
4821 "should be stored.  This structure is defined in I<E<lt>sys/quota.hE<gt>.> "
4822 "The I<special> and I<id> arguments are ignored.  This operation is obsolete "
4823 "and not supported by recent kernels.  Files in I</proc/sys/fs/quota/> carry "
4824 "the information instead."
4825 msgstr ""
4826
4827 #. type: Plain text
4828 #: build/C/man2/quotactl.2:340
4829 msgid ""
4830 "For XFS file systems making use of the XFS Quota Manager (XQM), the above "
4831 "commands are bypassed and the following commands are used:"
4832 msgstr ""
4833
4834 #. type: TP
4835 #: build/C/man2/quotactl.2:340
4836 #, fuzzy, no-wrap
4837 #| msgid "B<Q_QUOTAON>"
4838 msgid "B<Q_XQUOTAON>"
4839 msgstr "B<Q_QUOTAON>"
4840
4841 #. type: Plain text
4842 #: build/C/man2/quotactl.2:361
4843 msgid ""
4844 "Turn on quotas for an XFS file system.  XFS provides the ability to turn on/"
4845 "off quota limit enforcement with quota accounting.  Therefore, XFS expects "
4846 "I<addr> to be a pointer to an I<unsigned int> that contains either the flags "
4847 "B<XFS_QUOTA_UDQ_ACCT> and/or B<XFS_QUOTA_UDQ_ENFD> (for user quota), or "
4848 "B<XFS_QUOTA_GDQ_ACCT> and/or B<XFS_QUOTA_GDQ_ENFD> (for group quota), as "
4849 "defined in I<E<lt>xfs/xqm.hE<gt>>.  This operation requires privilege "
4850 "(B<CAP_SYS_ADMIN>)."
4851 msgstr ""
4852
4853 #. type: TP
4854 #: build/C/man2/quotactl.2:361
4855 #, fuzzy, no-wrap
4856 #| msgid "B<Q_QUOTAOFF>"
4857 msgid "B<Q_XQUOTAOFF>"
4858 msgstr "B<Q_QUOTAOFF>"
4859
4860 #. type: Plain text
4861 #: build/C/man2/quotactl.2:372
4862 msgid ""
4863 "Turn off quotas for an XFS file system.  As with B<Q_QUOTAON>, XFS file "
4864 "systems expect a pointer to an I<unsigned int> that specifies whether quota "
4865 "accounting and/or limit enforcement need to be turned off.  This operation "
4866 "requires privilege (B<CAP_SYS_ADMIN>)."
4867 msgstr ""
4868
4869 #. type: TP
4870 #: build/C/man2/quotactl.2:372
4871 #, fuzzy, no-wrap
4872 #| msgid "B<Q_GETQUOTA>"
4873 msgid "B<Q_XGETQUOTA>"
4874 msgstr "B<Q_GETQUOTA>"
4875
4876 #. type: Plain text
4877 #: build/C/man2/quotactl.2:386
4878 msgid ""
4879 "Get disk quota limits and current usage for user I<id>.  The I<addr> "
4880 "argument is a pointer to an I<fs_disk_quota> structure (defined in "
4881 "I<E<lt>xfs/xqm.hE<gt>>).  Unprivileged users may retrieve only their own "
4882 "quotas; a privileged user (B<CAP_SYS_ADMIN>)  may retrieve the quotas of any "
4883 "user."
4884 msgstr ""
4885
4886 #. type: TP
4887 #: build/C/man2/quotactl.2:386
4888 #, fuzzy, no-wrap
4889 #| msgid "B<Q_SETQLIM>"
4890 msgid "B<Q_XSETQLIM>"
4891 msgstr "B<Q_SETQLIM>"
4892
4893 #. type: Plain text
4894 #: build/C/man2/quotactl.2:398
4895 #, fuzzy
4896 #| msgid ""
4897 #| "Get limits and current usage of disk space.  The I<addr> argument is a "
4898 #| "pointer to a dqblk structure (defined in I<E<lt>sys/quota.hE<gt>>)."
4899 msgid ""
4900 "Set disk quota limits for user I<id>.  The I<addr> argument is a pointer to "
4901 "an I<fs_disk_quota> structure (defined in I<E<lt>xfs/xqm.hE<gt>>).  This "
4902 "operation requires privilege (B<CAP_SYS_ADMIN>)."
4903 msgstr ""
4904 "ディスク使用量の制限値と現在の使用量を得る。 I<addr> 引き数は (I<E<lt>sys/"
4905 "quota.hE<gt>> で定義された) dqblk 構造体を指すポインタである。"
4906
4907 #. type: TP
4908 #: build/C/man2/quotactl.2:398
4909 #, fuzzy, no-wrap
4910 #| msgid "B<Q_GETSTATS>"
4911 msgid "B<Q_XGETQSTAT>"
4912 msgstr "B<Q_GETSTATS>"
4913
4914 #. type: Plain text
4915 #: build/C/man2/quotactl.2:406
4916 msgid ""
4917 "Returns an I<fs_quota_stat> structure containing XFS file system specific "
4918 "quota information.  This is useful for finding out how much space is used to "
4919 "store quota information, and also to get quotaon/off status of a given local "
4920 "XFS file system."
4921 msgstr ""
4922
4923 #. type: TP
4924 #: build/C/man2/quotactl.2:406
4925 #, fuzzy, no-wrap
4926 #| msgid "B<Q_QUOTAON>"
4927 msgid "B<Q_XQUOTARM>"
4928 msgstr "B<Q_QUOTAON>"
4929
4930 #. type: Plain text
4931 #: build/C/man2/quotactl.2:410
4932 msgid ""
4933 "Free the disk space taken by disk quotas.  Quotas must have already been "
4934 "turned off."
4935 msgstr ""
4936
4937 #. type: Plain text
4938 #: build/C/man2/quotactl.2:417
4939 msgid ""
4940 "There is no command equivalent to B<Q_SYNC> for XFS since B<sync>(1)  writes "
4941 "quota information to disk (in addition to the other file system metadata "
4942 "that it writes out)."
4943 msgstr ""
4944
4945 #. type: SH
4946 #: build/C/man2/quotactl.2:417
4947 #, fuzzy, no-wrap
4948 #| msgid "RETURN VALUE"
4949 msgid "RETURN VALUES"
4950 msgstr "返り値"
4951
4952 #. type: Plain text
4953 #: build/C/man2/quotactl.2:425
4954 #, fuzzy
4955 #| msgid ""
4956 #| "On success, B<arch_prctl>()  returns 0; on error, -1 is returned, and "
4957 #| "I<errno> is set to indicate the error."
4958 msgid ""
4959 "On success, B<quotactl>()  returns 0; on error -1 is returned, and I<errno> "
4960 "is set to indicate the error."
4961 msgstr ""
4962 "成功すると、 B<arch_prctl>()  は 0 を返す。エラーの場合、-1 を返し、 "
4963 "I<errno> をエラーを示す値に設定する。"
4964
4965 #. type: Plain text
4966 #: build/C/man2/quotactl.2:432
4967 msgid "I<addr> or I<special> is invalid."
4968 msgstr ""
4969
4970 #. type: Plain text
4971 #: build/C/man2/quotactl.2:438
4972 msgid "I<cmd> or I<type> is invalid."
4973 msgstr ""
4974
4975 #. type: TP
4976 #: build/C/man2/quotactl.2:438
4977 #, fuzzy, no-wrap
4978 #| msgid "B<ENOMEM>"
4979 msgid "B<ENOENT>"
4980 msgstr "B<ENOMEM>"
4981
4982 #. type: Plain text
4983 #: build/C/man2/quotactl.2:445
4984 msgid "The file specified by I<special> or I<addr> does not exist."
4985 msgstr ""
4986
4987 #. type: Plain text
4988 #: build/C/man2/quotactl.2:450
4989 msgid "The kernel has not been compiled with the B<CONFIG_QUOTA> option."
4990 msgstr ""
4991
4992 #. type: TP
4993 #: build/C/man2/quotactl.2:450
4994 #, no-wrap
4995 msgid "B<ENOTBLK>"
4996 msgstr "B<ENOTBLK>"
4997
4998 #. type: Plain text
4999 #: build/C/man2/quotactl.2:454
5000 #, fuzzy
5001 #| msgid "I<special> is not a block special device."
5002 msgid "I<special> is not a block device."
5003 msgstr "I<special> がブロック・スペシャル・デバイスではない。"
5004
5005 #. type: Plain text
5006 #: build/C/man2/quotactl.2:459
5007 msgid ""
5008 "The caller lacked the required privilege (B<CAP_SYS_ADMIN>)  for the "
5009 "specified operation."
5010 msgstr ""
5011
5012 #. type: Plain text
5013 #: build/C/man2/quotactl.2:463
5014 msgid ""
5015 "No disk quota is found for the indicated user.  Quotas have not been turned "
5016 "on for this file system."
5017 msgstr ""
5018
5019 #. type: Plain text
5020 #: build/C/man2/quotactl.2:472
5021 msgid "If I<cmd> is B<Q_SETQUOTA>, B<quotactl>()  may also set I<errno> to:"
5022 msgstr ""
5023
5024 #. type: Plain text
5025 #: build/C/man2/quotactl.2:475
5026 msgid "Specified limits are out of range allowed by quota format."
5027 msgstr ""
5028
5029 #. type: Plain text
5030 #: build/C/man2/quotactl.2:484
5031 msgid "If I<cmd> is B<Q_QUOTAON>, B<quotactl>()  may also set I<errno> to:"
5032 msgstr ""
5033
5034 #. type: Plain text
5035 #: build/C/man2/quotactl.2:493
5036 msgid ""
5037 "The quota file pointed to by I<addr> exists, but is not a regular file; or, "
5038 "the quota file pointed to by I<addr> exists, but is not on the file system "
5039 "pointed to by I<special>."
5040 msgstr ""
5041
5042 #. type: Plain text
5043 #: build/C/man2/quotactl.2:499
5044 msgid ""
5045 "B<Q_QUOTAON> attempted, but another B<Q_QUOTAON> had already been performed."
5046 msgstr ""
5047
5048 #. type: Plain text
5049 #: build/C/man2/quotactl.2:502
5050 #, fuzzy
5051 #| msgid "The quota file is not an ordinary file."
5052 msgid "The quota file is corrupted."
5053 msgstr "quota ファイルが普通のファイルではない。"
5054
5055 #. type: Plain text
5056 #: build/C/man2/quotactl.2:505
5057 msgid "Specified quota format was not found."
5058 msgstr ""
5059
5060 #. type: Plain text
5061 #: build/C/man2/quotactl.2:509
5062 #, fuzzy
5063 #| msgid ""
5064 #| "B<quota>(1), B<getrlimit>(2), B<setrlimit>(2), B<ulimit>(3), B<quotacheck>"
5065 #| "(8), B<quotaon>(8)"
5066 msgid "B<quota>(1), B<getrlimit>(2), B<quotacheck>(8), B<quotaon>(8)"
5067 msgstr ""
5068 "B<quota>(1), B<getrlimit>(2), B<setrlimit>(2), B<ulimit>(3), B<quotacheck>"
5069 "(8), B<quotaon>(8)"
5070
5071 #. type: TH
5072 #: build/C/man2/sendfile.2:15
5073 #, no-wrap
5074 msgid "SENDFILE"
5075 msgstr "SENDFILE"
5076
5077 #. type: TH
5078 #: build/C/man2/sendfile.2:15
5079 #, fuzzy, no-wrap
5080 #| msgid "2004-09-10"
5081 msgid "2011-09-14"
5082 msgstr "2004-09-10"
5083
5084 #. type: Plain text
5085 #: build/C/man2/sendfile.2:18
5086 msgid "sendfile - transfer data between file descriptors"
5087 msgstr "sendfile - ファイル・ディスクリプタ間でデータを転送する"
5088
5089 #. type: Plain text
5090 #: build/C/man2/sendfile.2:20
5091 msgid "B<#include E<lt>sys/sendfile.hE<gt>>"
5092 msgstr "B<#include E<lt>sys/sendfile.hE<gt>>"
5093
5094 #.  The below is too ugly. Comments about glibc versions belong
5095 #.  in the notes, not in the header.
5096 #.  .B #include <features.h>
5097 #.  .br
5098 #.  .B #if (__GLIBC__==2 && __GLIBC_MINOR__>=1) || __GLIBC__>2
5099 #.  .br
5100 #.  .B #include <sys/sendfile.h>
5101 #.  .br
5102 #.  #else
5103 #.  .br
5104 #.  .B #include <sys/types.h>
5105 #.  .br
5106 #.  .B /* No system prototype before glibc 2.1. */
5107 #.  .br
5108 #.  .BI "ssize_t sendfile(int" " out_fd" ", int" " in_fd" ", off_t *" #.                        offset ", size_t" " count" )
5109 #.  .br
5110 #.  .B #endif
5111 #. type: Plain text
5112 #: build/C/man2/sendfile.2:43
5113 msgid ""
5114 "B<ssize_t sendfile(int>I< out_fd>B<, int>I< in_fd>B<, off_t *>I<offset>B<, "
5115 "size_t>I< count>B<);>"
5116 msgstr ""
5117 "B<ssize_t sendfile(int>I< out_fd>B<, int>I< in_fd>B<, off_t *>I<offset>B<, "
5118 "size_t>I< count>B<);>"
5119
5120 #. type: Plain text
5121 #: build/C/man2/sendfile.2:53
5122 msgid ""
5123 "B<sendfile>()  copies data between one file descriptor and another.  Because "
5124 "this copying is done within the kernel, B<sendfile>()  is more efficient "
5125 "than the combination of B<read>(2)  and B<write>(2), which would require "
5126 "transferring data to and from user space."
5127 msgstr ""
5128 "B<sendfile>()  は、あるファイル・ディスクリプタから別の ファイル・ディスクリ"
5129 "プタへのデータのコピーを行う。 このコピーはカーネル内で行われるので、 "
5130 "B<sendfile>()  は、 B<read>(2)  と B<write>(2)  を組み合わせるよりも効率がよ"
5131 "い。 B<read>(2)  や B<write>(2)  ではユーザ空間との間でデータの転送が必要とな"
5132 "るからである。"
5133
5134 #. type: Plain text
5135 #: build/C/man2/sendfile.2:58
5136 msgid ""
5137 "I<in_fd> should be a file descriptor opened for reading and I<out_fd> should "
5138 "be a descriptor opened for writing."
5139 msgstr ""
5140 "I<in_fd> は読み込みのためにオープンされたファイル・ディスクリプタ、 "
5141 "I<out_fd> は書き込みのためにオープンされたディスクリプタでなければならない。"
5142
5143 #. type: Plain text
5144 #: build/C/man2/sendfile.2:79
5145 msgid ""
5146 "If I<offset> is not NULL, then it points to a variable holding the file "
5147 "offset from which B<sendfile>()  will start reading data from I<in_fd>.  "
5148 "When B<sendfile>()  returns, this variable will be set to the offset of the "
5149 "byte following the last byte that was read.  If I<offset> is not NULL, then "
5150 "B<sendfile>()  does not modify the current file offset of I<in_fd>; "
5151 "otherwise the current file offset is adjusted to reflect the number of bytes "
5152 "read from I<in_fd>."
5153 msgstr ""
5154 "I<offset> が NULL でない場合、 I<offset> は B<sendfile>()  が I<in_fd> のどこ"
5155 "からデータを読み始めるかを示すファイル・オフセットを保持する変数への ポインタ"
5156 "である。 B<sendfile>()  は復帰する時、この変数に最後に読み込んだバイトの 次の"
5157 "バイトのオフセットを書き込む。 I<offset> が NULL でない場合、 B<sendfile>()  "
5158 "は I<in_fd> のファイル・オフセットの現在値を変更しない。 NULL の場合は、ファ"
5159 "イル・オフセットの現在値を I<in_fd> から読み込んだバイト数を反映した位置に調"
5160 "整する。"
5161
5162 #. type: Plain text
5163 #: build/C/man2/sendfile.2:86
5164 msgid ""
5165 "If I<offset> is NULL, then data will be read from I<in_fd> starting at the "
5166 "current file offset, and the file offset will be updated by the call."
5167 msgstr ""
5168 "I<offset> が NULL の場合、データは I<in_fd> の現在のファイル・オフセットから"
5169 "読み出され、 ファイル・オフセットはこの呼び出しで更新される。"
5170
5171 #. type: Plain text
5172 #: build/C/man2/sendfile.2:89
5173 msgid "I<count> is the number of bytes to copy between the file descriptors."
5174 msgstr "I<count> は、ファイル・ディスクリプタ間でコピーするバイト数である。"
5175
5176 #. type: Plain text
5177 #: build/C/man2/sendfile.2:96
5178 #, fuzzy
5179 #| msgid ""
5180 #| "Presently (Linux 2.6.9): I<in_fd>, must correspond to a file which "
5181 #| "supports B<mmap>(2)-like operations (i.e., it cannot be a socket); and "
5182 #| "I<out_fd> must refer to a socket."
5183 msgid ""
5184 "The I<in_fd> argument must correspond to a file which supports B<mmap>(2)-"
5185 "like operations (i.e., it cannot be a socket)."
5186 msgstr ""
5187 "今のところ (Linux 2.6.9 では)、 I<in_fd> は B<mmap>(2)  風の操作ができるファ"
5188 "イルを指していなければならない (ソケットを指してはならない)。また、 "
5189 "I<out_fd> はソケットを指していなければならない。"
5190
5191 #. type: Plain text
5192 #: build/C/man2/sendfile.2:104
5193 #, fuzzy
5194 #| msgid ""
5195 #| "In Linux 2.4 and earlier, I<out_fd> could refer to a regular file, and "
5196 #| "B<sendfile>()  changed the current offset of that file."
5197 msgid ""
5198 "In Linux kernels before 2.6.33, I<out_fd> must refer to a socket.  Since "
5199 "Linux 2.6.33 it can be any file.  If it is a regular file, then B<sendfile>"
5200 "()  changes the file offset appropriately."
5201 msgstr ""
5202 "Linux 2.4 とそれ以前のバージョンでは、 I<out_fd> は通常のファイルを参照で"
5203 "き、 B<sendfile>()  はそのファイルのオフセットの現在値を変更していた。"
5204
5205 #. type: Plain text
5206 #: build/C/man2/sendfile.2:111
5207 msgid ""
5208 "If the transfer was successful, the number of bytes written to I<out_fd> is "
5209 "returned.  On error, -1 is returned, and I<errno> is set appropriately."
5210 msgstr ""
5211 "転送に成功した場合、 I<out_fd> に書き込まれたバイト数を返す。エラーの場"
5212 "合、-1 を返し、 I<errno> に適切な値を設定する。"
5213
5214 #. type: Plain text
5215 #: build/C/man2/sendfile.2:117
5216 msgid ""
5217 "Nonblocking I/O has been selected using B<O_NONBLOCK> and the write would "
5218 "block."
5219 msgstr ""
5220 "B<O_NONBLOCK> を用いて非ブロック I/O が選択されたが、書き込みがブロックされ"
5221 "た。"
5222
5223 #. type: TP
5224 #: build/C/man2/sendfile.2:117 build/C/man2/splice.2:143
5225 #: build/C/man2/vmsplice.2:123
5226 #, no-wrap
5227 msgid "B<EBADF>"
5228 msgstr "B<EBADF>"
5229
5230 #. type: Plain text
5231 #: build/C/man2/sendfile.2:121
5232 msgid ""
5233 "The input file was not opened for reading or the output file was not opened "
5234 "for writing."
5235 msgstr ""
5236 "入力ファイルが読み込みのためにオープンされていないか、 出力ファイルが書き込み"
5237 "のためにオープンされていない。"
5238
5239 #. type: Plain text
5240 #: build/C/man2/sendfile.2:124
5241 msgid "Bad address."
5242 msgstr "アドレスがおかしい。"
5243
5244 #. type: Plain text
5245 #: build/C/man2/sendfile.2:130
5246 msgid ""
5247 "Descriptor is not valid or locked, or an B<mmap>(2)-like operation is not "
5248 "available for I<in_fd>."
5249 msgstr ""
5250 "ディスクリプタが有効でないか、ロックされている。もしくは B<mmap>(2)  風の操作"
5251 "が I<in_fd> では利用できない。"
5252
5253 #. type: Plain text
5254 #: build/C/man2/sendfile.2:134
5255 msgid "Unspecified error while reading from I<in_fd>."
5256 msgstr "I<in_fd> から読み込んでいるうちに予期しないエラーが起こった。"
5257
5258 #. type: Plain text
5259 #: build/C/man2/sendfile.2:138
5260 msgid "Insufficient memory to read from I<in_fd>."
5261 msgstr "I<in_fd> から読み込むための十分なメモリがない。"
5262
5263 #. type: Plain text
5264 #: build/C/man2/sendfile.2:144
5265 msgid ""
5266 "B<sendfile>()  is a new feature in Linux 2.2.  The include file I<E<lt>sys/"
5267 "sendfile.hE<gt>> is present since glibc 2.1."
5268 msgstr ""
5269 "B<sendfile> は Linux 2.2 の新しい機能である。 インクルードファイル "
5270 "I<E<lt>sys/sendfile.hE<gt>> は glibc 2.1 から存在している。"
5271
5272 #. type: Plain text
5273 #: build/C/man2/sendfile.2:146
5274 msgid "Not specified in POSIX.1-2001, or other standards."
5275 msgstr "POSIX.1-2001 や他の標準では規定されていない。"
5276
5277 #. type: Plain text
5278 #: build/C/man2/sendfile.2:151
5279 msgid ""
5280 "Other UNIX systems implement B<sendfile>()  with different semantics and "
5281 "prototypes.  It should not be used in portable programs."
5282 msgstr ""
5283 "他の UNIX システムでは、異なった方式やプロトタイプで B<sendfile>()  を実装し"
5284 "ている。移植性を考慮したプログラムでは使用すべきではない。"
5285
5286 #. type: Plain text
5287 #: build/C/man2/sendfile.2:161
5288 msgid ""
5289 "If you plan to use B<sendfile>()  for sending files to a TCP socket, but "
5290 "need to send some header data in front of the file contents, you will find "
5291 "it useful to employ the B<TCP_CORK> option, described in B<tcp>(7), to "
5292 "minimize the number of packets and to tune performance."
5293 msgstr ""
5294 "B<sendfile>()  を使って TCP ソケットにファイルを送ろうとしていて、 ファイルの"
5295 "内容の前にヘッダ・データを付け加える必要がある場合は、 パケット数を最小にして"
5296 "性能を上げるために B<tcp>(7)  に記述されている B<TCP_CORK> オプションを使うと"
5297 "いいだろう。"
5298
5299 #. type: Plain text
5300 #: build/C/man2/sendfile.2:167
5301 #, fuzzy
5302 #| msgid ""
5303 #| "In Linux 2.4 and earlier, I<out_fd> could refer to a regular file, and "
5304 #| "B<sendfile>()  changed the current offset of that file."
5305 msgid ""
5306 "In Linux 2.4 and earlier, I<out_fd> could also refer to a regular file, and "
5307 "B<sendfile>()  changed the current offset of that file."
5308 msgstr ""
5309 "Linux 2.4 とそれ以前のバージョンでは、 I<out_fd> は通常のファイルを参照で"
5310 "き、 B<sendfile>()  はそのファイルのオフセットの現在値を変更していた。"
5311
5312 #. type: Plain text
5313 #: build/C/man2/sendfile.2:179
5314 msgid ""
5315 "The original Linux B<sendfile>()  system call was not designed to handle "
5316 "large file offsets.  Consequently, Linux 2.4 added B<sendfile64>(), with a "
5317 "wider type for the I<offset> argument.  The glibc B<sendfile>()  wrapper "
5318 "function transparently deals with the kernel differences."
5319 msgstr ""
5320
5321 #. type: Plain text
5322 #: build/C/man2/sendfile.2:188
5323 msgid ""
5324 "Applications may wish to fall back to B<read>(2)/B<write>(2)  in the case "
5325 "where B<sendfile>()  fails with B<EINVAL> or B<ENOSYS>."
5326 msgstr ""
5327 "B<sendfile>()  が B<EINVAL> や B<ENOSYS> で失敗するような場合は、 アプリケー"
5328 "ションは B<read>(2)/B<write>(2)  に戻すことを考えてもよいかもしれない。"
5329
5330 #. type: Plain text
5331 #: build/C/man2/sendfile.2:193
5332 msgid ""
5333 "The Linux-specific B<splice>(2)  call supports transferring data between "
5334 "arbitrary files (e.g., a pair of sockets)."
5335 msgstr ""
5336
5337 #. type: Plain text
5338 #: build/C/man2/sendfile.2:198
5339 msgid "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
5340 msgstr "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
5341
5342 #. type: TH
5343 #: build/C/man2/set_tid_address.2:23
5344 #, no-wrap
5345 msgid "SET_TID_ADDRESS"
5346 msgstr "SET_TID_ADDRESS"
5347
5348 #. type: TH
5349 #: build/C/man2/set_tid_address.2:23
5350 #, no-wrap
5351 msgid "2004-09-10"
5352 msgstr "2004-09-10"
5353
5354 #. type: Plain text
5355 #: build/C/man2/set_tid_address.2:26
5356 msgid "set_tid_address - set pointer to thread ID"
5357 msgstr "set_tid_address - スレッド ID へのポインタを設定する"
5358
5359 #. type: Plain text
5360 #: build/C/man2/set_tid_address.2:29
5361 #, no-wrap
5362 msgid "B<#include E<lt>linux/unistd.hE<gt>>\n"
5363 msgstr "B<#include E<lt>linux/unistd.hE<gt>>\n"
5364
5365 #. type: Plain text
5366 #: build/C/man2/set_tid_address.2:31
5367 #, no-wrap
5368 msgid "B<long set_tid_address(int *>I<tidptr>B<);>\n"
5369 msgstr "B<long set_tid_address(int *>I<tidptr>B<);>\n"
5370
5371 #. type: Plain text
5372 #: build/C/man2/set_tid_address.2:38
5373 msgid ""
5374 "The kernel keeps for each process two values called I<set_child_tid> and "
5375 "I<clear_child_tid> that are NULL by default."
5376 msgstr ""
5377 "カーネルは各プロセスについて I<set_child_tid> と I<clear_child_tid> という 2 "
5378 "つの値を保持する。 これらはデフォルトでは NULL である。"
5379
5380 #. type: SS
5381 #: build/C/man2/set_tid_address.2:38
5382 #, no-wrap
5383 msgid "set_child_tid"
5384 msgstr "set_child_tid"
5385
5386 #. type: Plain text
5387 #: build/C/man2/set_tid_address.2:48
5388 msgid ""
5389 "If a process is started using B<clone>(2)  with the B<CLONE_CHILD_SETTID> "
5390 "flag, I<set_child_tid> is set to I<child_tidptr>, the fifth argument of that "
5391 "system call."
5392 msgstr ""
5393 "プロセスが B<CLONE_CHILD_SETTID> フラグを指定した B<clone>(2)  によって開始さ"
5394 "れた場合、 I<set_child_tid> は I<child_tidptr> に設定される。 これは B<clone>"
5395 "(2)  のシステムコールの 5 番目の引き数である。"
5396
5397 #. type: Plain text
5398 #: build/C/man2/set_tid_address.2:53
5399 msgid ""
5400 "When I<set_child_tid> is set, the very first thing the new process does is "
5401 "writing its PID at this address."
5402 msgstr ""
5403 "I<set_child_tid> が設定された場合、一番最初に新しいプロセスが行うことは、 こ"
5404 "のアドレスに自身の PID を書き込むことである。"
5405
5406 #. type: SS
5407 #: build/C/man2/set_tid_address.2:53
5408 #, no-wrap
5409 msgid "clear_child_tid"
5410 msgstr "clear_child_tid"
5411
5412 #. type: Plain text
5413 #: build/C/man2/set_tid_address.2:63
5414 msgid ""
5415 "If a process is started using B<clone>(2)  with the B<CLONE_CHILD_CLEARTID> "
5416 "flag, I<clear_child_tid> is set to I<child_tidptr>, the fifth argument of "
5417 "that system call."
5418 msgstr ""
5419 "プロセスが B<CLONE_CHILD_CLEARTID> フラグを指定した B<clone>(2)  によって開始"
5420 "された場合、 I<clear_child_tid> は I<child_tidptr> に設定される。 これは "
5421 "B<clone>(2)  のシステムコールの 5 番目の引き数である。"
5422
5423 #. type: Plain text
5424 #: build/C/man2/set_tid_address.2:70
5425 msgid ""
5426 "The system call B<set_tid_address>()  sets the I<clear_child_tid> value for "
5427 "the calling process to I<tidptr>."
5428 msgstr ""
5429 "システムコール B<set_tid_address>()  は呼び出し元プロセスの "
5430 "I<clear_child_tid> の値を I<tidptr> に設定する。"
5431
5432 #. type: Plain text
5433 #: build/C/man2/set_tid_address.2:80
5434 msgid ""
5435 "When I<clear_child_tid> is set, and the process exits, and the process was "
5436 "sharing memory with other processes or threads, then 0 is written at this "
5437 "address, and a I<futex(child_tidptr, FUTEX_WAKE, 1, NULL, NULL, 0);> call is "
5438 "done.  (That is, wake a single process waiting on this futex.)  Errors are "
5439 "ignored."
5440 msgstr ""
5441 "I<clear_child_tid> が設定されているときにプロセスが終了すると、 そのプロセス"
5442 "は他のプロセスまたはスレッドとメモリを共有しているので、 このアドレスに 0 が"
5443 "書き込まれ、 I<futex(child_tidptr, FUTEX_WAKE, 1, NULL, NULL, 0);> の呼び出し"
5444 "が実行される (つまり、この futex で待っている 1 つのプロセスを起こす "
5445 "(wake))。 エラーは無視される。"
5446
5447 #. type: Plain text
5448 #: build/C/man2/set_tid_address.2:83
5449 msgid "B<set_tid_address>()  always returns the PID of the calling process."
5450 msgstr "B<set_tid_address>()  は常に現在のプロセスの PID を返す。"
5451
5452 #. type: Plain text
5453 #: build/C/man2/set_tid_address.2:86
5454 msgid "B<set_tid_address>()  always succeeds."
5455 msgstr "B<set_tid_address>()  は常に成功する。"
5456
5457 #. type: Plain text
5458 #: build/C/man2/set_tid_address.2:89
5459 msgid ""
5460 "This call is present since Linux 2.5.48.  Details as given here are valid "
5461 "since Linux 2.5.49."
5462 msgstr ""
5463 "この呼び出しは Linux 2.5.48 以降で存在する。 ここで書かれた詳細は Linux "
5464 "2.5.49 以降で有効である。"
5465
5466 #. type: Plain text
5467 #: build/C/man2/set_tid_address.2:93
5468 msgid "B<clone>(2), B<futex>(2)"
5469 msgstr "B<clone>(2), B<futex>(2)"
5470
5471 #. type: TH
5472 #: build/C/man2/splice.2:26
5473 #, no-wrap
5474 msgid "SPLICE"
5475 msgstr "SPLICE"
5476
5477 #. type: TH
5478 #: build/C/man2/splice.2:26 build/C/man2/tee.2:26 build/C/man2/vmsplice.2:26
5479 #, no-wrap
5480 msgid "2009-09-15"
5481 msgstr "2009-09-15"
5482
5483 #. type: Plain text
5484 #: build/C/man2/splice.2:29
5485 msgid "splice - splice data to/from a pipe"
5486 msgstr "splice - パイプとの間でデータを継ぎ合わせる"
5487
5488 #. type: Plain text
5489 #: build/C/man2/splice.2:33 build/C/man2/tee.2:33
5490 #, no-wrap
5491 msgid ""
5492 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
5493 "B<#include E<lt>fcntl.hE<gt>>\n"
5494 msgstr ""
5495 "B<#define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
5496 "B<#include E<lt>fcntl.hE<gt>>\n"
5497
5498 #.  Return type was long before glibc 2.7
5499 #. type: Plain text
5500 #: build/C/man2/splice.2:38
5501 #, no-wrap
5502 msgid ""
5503 "B<ssize_t splice(int >I<fd_in>B<, loff_t *>I<off_in>B<, int >I<fd_out>B<,>\n"
5504 "B<               loff_t *>I<off_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
5505 msgstr ""
5506 "B<ssize_t splice(int >I<fd_in>B<, loff_t *>I<off_in>B<, int >I<fd_out>B<,>\n"
5507 "B<               loff_t *>I<off_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
5508
5509 #. type: Plain text
5510 #: build/C/man2/splice.2:50
5511 msgid ""
5512 "B<splice>()  moves data between two file descriptors without copying between "
5513 "kernel address space and user address space.  It transfers up to I<len> "
5514 "bytes of data from the file descriptor I<fd_in> to the file descriptor "
5515 "I<fd_out>, where one of the descriptors must refer to a pipe."
5516 msgstr ""
5517 "B<splice>()  は、カーネルアドレス空間とユーザアドレス空間との間のコピーを伴わ"
5518 "ずに、 2 つのファイルディスクリプタ間でデータの移動を行う。 ファイルディスク"
5519 "リプタ I<fd_in> からファイルディスクリプタ I<fd_out> へ最大 I<len> バイトを転"
5520 "送する。 2 つのファイルディスクリプタのうち一つは パイプを参照していなければ"
5521 "ならない。"
5522
5523 #. type: Plain text
5524 #: build/C/man2/splice.2:80
5525 msgid ""
5526 "If I<fd_in> refers to a pipe, then I<off_in> must be NULL.  If I<fd_in> does "
5527 "not refer to a pipe and I<off_in> is NULL, then bytes are read from I<fd_in> "
5528 "starting from the current file offset, and the current file offset is "
5529 "adjusted appropriately.  If I<fd_in> does not refer to a pipe and I<off_in> "
5530 "is not NULL, then I<off_in> must point to a buffer which specifies the "
5531 "starting offset from which bytes will be read from I<fd_in>; in this case, "
5532 "the current file offset of I<fd_in> is not changed.  Analogous statements "
5533 "apply for I<fd_out> and I<off_out>."
5534 msgstr ""
5535 "I<fd_in> がパイプを参照している場合、 I<off_in> は NULL でなければならない。 "
5536 "I<fd_in> がパイプを参照しておらず、 I<off_in> が NULL の場合、 I<fd_in> の現"
5537 "在のファイルオフセットから始まるバイトを読み出す。 現在のファイルオフセットは"
5538 "適切に調整される。 I<fd_in> がパイプを参照しておらず、 I<off_in> が NULL でな"
5539 "い場合、 I<off_in> は I<fd_in> からのデータ読み出しを開始する先頭オフセットを"
5540 "格納したバッファ へのポインタでなければならない。この場合、 I<fd_in> の現在の"
5541 "ファイルオフセットは変更されない。 I<fd_out> と I<off_out> に関しても同様であ"
5542 "る。"
5543
5544 #. type: Plain text
5545 #: build/C/man2/splice.2:85 build/C/man2/vmsplice.2:78
5546 msgid ""
5547 "The I<flags> argument is a bit mask that is composed by ORing together zero "
5548 "or more of the following values:"
5549 msgstr ""
5550 "I<flags> 引き数には、以下の値の 0 個以上をビット毎の論理和の形で指定する。"
5551
5552 #. type: TP
5553 #: build/C/man2/splice.2:85 build/C/man2/tee.2:62 build/C/man2/vmsplice.2:78
5554 #, no-wrap
5555 msgid "B<SPLICE_F_MOVE>"
5556 msgstr "B<SPLICE_F_MOVE>"
5557
5558 #. type: Plain text
5559 #: build/C/man2/splice.2:98
5560 msgid ""
5561 "Attempt to move pages instead of copying.  This is only a hint to the "
5562 "kernel: pages may still be copied if the kernel cannot move the pages from "
5563 "the pipe, or if the pipe buffers don't refer to full pages.  The initial "
5564 "implementation of this flag was buggy: therefore starting in Linux 2.6.21 it "
5565 "is a no-op (but is still permitted in a B<splice>()  call); in the future, a "
5566 "correct implementation may be restored."
5567 msgstr ""
5568 "ページのコピーでなく移動を試みる。 これはカーネルに対するヒントでしかない。 "
5569 "つまり、カーネルがパイプからページを移動できない場合や、 パイプバッファがペー"
5570 "ジ全部を参照していない場合は、 ページのコピーが行われることもある。 このフラ"
5571 "グの最初の実装にはバグがあった。そのため、 Linux 2.6.21 以降ではこのフラグの"
5572 "操作はできないようになっている (ただし、 B<splice>()  コールでこのフラグを指"
5573 "定することは今も認められている)。 将来、正しい実装が行われることだろう。"
5574
5575 #. type: TP
5576 #: build/C/man2/splice.2:98 build/C/man2/tee.2:68 build/C/man2/vmsplice.2:84
5577 #, no-wrap
5578 msgid "B<SPLICE_F_NONBLOCK>"
5579 msgstr "B<SPLICE_F_NONBLOCK>"
5580
5581 #. type: Plain text
5582 #: build/C/man2/splice.2:107
5583 msgid ""
5584 "Do not block on I/O.  This makes the splice pipe operations nonblocking, but "
5585 "B<splice>()  may nevertheless block because the file descriptors that are "
5586 "spliced to/from may block (unless they have the B<O_NONBLOCK> flag set)."
5587 msgstr ""
5588 "入出力時に停止 (block) しない。 このフラグを指定すると、 splice によるパイプ"
5589 "操作を非停止モード (nonblocking) で 行おうとするが、その場合でも B<splice>"
5590 "()  は停止することもある。なぜなら、データのやり取りを行う ファイルディスクリ"
5591 "プタは (B<O_NONBLOCK> フラグをセットされていない場合) 停止する可能性があるか"
5592 "らである。"
5593
5594 #. type: TP
5595 #: build/C/man2/splice.2:107 build/C/man2/tee.2:73 build/C/man2/vmsplice.2:91
5596 #, no-wrap
5597 msgid "B<SPLICE_F_MORE>"
5598 msgstr "B<SPLICE_F_MORE>"
5599
5600 #. type: Plain text
5601 #: build/C/man2/splice.2:121
5602 msgid ""
5603 "More data will be coming in a subsequent splice.  This is a helpful hint "
5604 "when the I<fd_out> refers to a socket (see also the description of "
5605 "B<MSG_MORE> in B<send>(2), and the description of B<TCP_CORK> in B<tcp>(7))"
5606 msgstr ""
5607 "この後の splice でさらに転送されるデータがあることを示す。 このフラグは "
5608 "I<fd_out> がソケットを参照している場合に有用なヒントとなる (B<send>(2)  の "
5609 "B<MSG_MORE> や B<tcp>(7)  の B<TCP_CORK> の説明も参照)。"
5610
5611 #. type: TP
5612 #: build/C/man2/splice.2:121 build/C/man2/tee.2:79 build/C/man2/vmsplice.2:97
5613 #, no-wrap
5614 msgid "B<SPLICE_F_GIFT>"
5615 msgstr "B<SPLICE_F_GIFT>"
5616
5617 #. type: Plain text
5618 #: build/C/man2/splice.2:127
5619 msgid "Unused for B<splice>(); see B<vmsplice>(2)."
5620 msgstr "B<splice>()  では使用しない。 B<vmsplice>(2)  参照。"
5621
5622 #. type: Plain text
5623 #: build/C/man2/splice.2:136
5624 msgid ""
5625 "Upon successful completion, B<splice>()  returns the number of bytes spliced "
5626 "to or from the pipe.  A return value of 0 means that there was no data to "
5627 "transfer, and it would not make sense to block, because there are no writers "
5628 "connected to the write end of the pipe referred to by I<fd_in>."
5629 msgstr ""
5630 "成功して完了すると、 B<splice>()  はパイプから出し入れしたバイト数を返す。 返"
5631 "り値 0 はデータの転送が行わなかったことを示す。 この場合、処理を停止 (block) "
5632 "しても無意味である。 なぜなら、 I<fd_in> が参照するパイプの書き込み側に接続さ"
5633 "れている者がいないからである。"
5634
5635 #. type: Plain text
5636 #: build/C/man2/splice.2:142
5637 msgid ""
5638 "On error, B<splice>()  returns -1 and I<errno> is set to indicate the error."
5639 msgstr ""
5640 "エラーの場合、 B<splice>()  は -1 を返し、 I<errno> にエラーを示す値を設定す"
5641 "る。"
5642
5643 #. type: Plain text
5644 #: build/C/man2/splice.2:147
5645 msgid ""
5646 "One or both file descriptors are not valid, or do not have proper read-write "
5647 "mode."
5648 msgstr ""
5649 "ファイルディスクリプタの一方または両方が有効ではない、 もしくは適切な read-"
5650 "write モードではない。"
5651
5652 #.  The append-mode error is given since 2.6.27; in earlier kernels,
5653 #.  splice() in append mode was broken
5654 #. type: Plain text
5655 #: build/C/man2/splice.2:155
5656 msgid ""
5657 "Target file system doesn't support splicing; target file is opened in append "
5658 "mode; neither of the descriptors refers to a pipe; or offset given for "
5659 "nonseekable device."
5660 msgstr ""
5661 "対象のファイルシステムが splice に対応していない、 または対象のファイルが追記"
5662 "モードでオープンされている、 またはディスクリプタのどちらもパイプを参照してい"
5663 "ない、 または seek できないデバイスに対してオフセットが指定された。"
5664
5665 #. type: Plain text
5666 #: build/C/man2/splice.2:158 build/C/man2/tee.2:114
5667 #: build/C/man2/vmsplice.2:138
5668 msgid "Out of memory."
5669 msgstr "メモリ不足。"
5670
5671 #. type: TP
5672 #: build/C/man2/splice.2:158
5673 #, no-wrap
5674 msgid "B<ESPIPE>"
5675 msgstr "B<ESPIPE>"
5676
5677 #. type: Plain text
5678 #: build/C/man2/splice.2:165
5679 msgid ""
5680 "Either I<off_in> or I<off_out> was not NULL, but the corresponding file "
5681 "descriptor refers to a pipe."
5682 msgstr ""
5683 "I<off_in> か I<off_out> のいずれかが NULL ではないが、対応するファイルディス"
5684 "クリプタが パイプを参照している。"
5685
5686 #. type: Plain text
5687 #: build/C/man2/splice.2:169
5688 msgid "The B<splice>()  system call first appeared in Linux 2.6.17."
5689 msgstr "B<splice>()  システムコールは Linux 2.6.17 で初めて登場した。"
5690
5691 #. type: Plain text
5692 #: build/C/man2/splice.2:181
5693 msgid ""
5694 "The three system calls B<splice>(), B<vmsplice>(2), and B<tee>(2), provide "
5695 "userspace programs with full control over an arbitrary kernel buffer, "
5696 "implemented within the kernel using the same type of buffer that is used for "
5697 "a pipe.  In overview, these system calls perform the following tasks:"
5698 msgstr ""
5699 "3 つのシステムコール (B<splice>(), B<vmsplice>(2), B<tee>(2))  を使うと、ユー"
5700 "ザ空間プログラムは任意のカーネルバッファに対する 完全な制御ができる。カーネル"
5701 "バッファは、パイプに使用されているのと 同種のバッファを使ってカーネル内に実装"
5702 "されている。 大まかにいうと、これらのシステムコールは以下の仕事を行う:"
5703
5704 #. type: TP
5705 #: build/C/man2/splice.2:181
5706 #, no-wrap
5707 msgid "B<splice>()"
5708 msgstr "B<splice>()"
5709
5710 #. type: Plain text
5711 #: build/C/man2/splice.2:185
5712 msgid ""
5713 "moves data from the buffer to an arbitrary file descriptor, or vice versa, "
5714 "or from one buffer to another."
5715 msgstr ""
5716 "バッファから任意のファイルディスクリプタや、その逆方向、 もしくはあるバッファ"
5717 "から別のバッファへの、データ移動を行う。"
5718
5719 #. type: TP
5720 #: build/C/man2/splice.2:185
5721 #, no-wrap
5722 msgid "B<tee>(2)"
5723 msgstr "B<tee>(2)"
5724
5725 #. type: Plain text
5726 #: build/C/man2/splice.2:188
5727 msgid "\"copies\" the data from one buffer to another."
5728 msgstr "あるバッファから別のバッファへのデータ「コピー」を行う。"
5729
5730 #. type: TP
5731 #: build/C/man2/splice.2:188
5732 #, no-wrap
5733 msgid "B<vmsplice>(2)"
5734 msgstr "B<vmsplice>(2)"
5735
5736 #. type: Plain text
5737 #: build/C/man2/splice.2:191
5738 msgid "\"copies\" data from user space into the buffer."
5739 msgstr "ユーザ空間からバッファへのデータ「コピー」を行う。"
5740
5741 #.  Linus: Now, imagine using the above in a media server, for example.
5742 #.  Let's say that a year or two has passed, so that the video drivers
5743 #.  have been updated to be able to do the splice thing, and what can
5744 #.  you do? You can:
5745 #.  - splice from the (mpeg or whatever - let's just assume that the video
5746 #.    input is either digital or does the encoding on its own - like they
5747 #.    pretty much all do) video input into a pipe (remember: no copies - the
5748 #.    video input will just DMA directly into memory, and splice will just
5749 #.    set up the pages in the pipe buffer)
5750 #.  - tee that pipe to split it up
5751 #.  - splice one end to a file (ie "save the compressed stream to disk")
5752 #.  - splice the other end to a real-time video decoder window for your
5753 #.    real-time viewing pleasure.
5754 #.  Linus: Now, the advantage of splice()/tee() is that you can
5755 #.  do zero-copy movement of data, and unlike sendfile() you can
5756 #.  do it on _arbitrary_ data (and, as shown by "tee()", it's more
5757 #.  than just sending the data to somebody else: you can duplicate
5758 #.  the data and choose to forward it to two or more different
5759 #.  users - for things like logging etc.).
5760 #. type: Plain text
5761 #: build/C/man2/splice.2:222
5762 msgid ""
5763 "Though we talk of copying, actual copies are generally avoided.  The kernel "
5764 "does this by implementing a pipe buffer as a set of reference-counted "
5765 "pointers to pages of kernel memory.  The kernel creates \"copies\" of pages "
5766 "in a buffer by creating new pointers (for the output buffer) referring to "
5767 "the pages, and increasing the reference counts for the pages: only pointers "
5768 "are copied, not the pages of the buffer."
5769 msgstr ""
5770 "ここではコピーの話をしているが、実際のコピーは一般的に回避される。 カーネル"
5771 "は、パイプ・バッファをカーネルメモリのページへのポインタ集合として 実装し、"
5772 "ページへの参照回数を管理することで、これを実現している。 カーネルは、対象とな"
5773 "るページを参照する (出力バッファ用の) ポインタを 新規に作成することでバッファ"
5774 "内のページの「コピー」を作成し、 そのページの参照回数を増やす。つまり、ポイン"
5775 "タだけがコピーされ、 バッファのページはコピーされない。"
5776
5777 #. type: SH
5778 #: build/C/man2/splice.2:222 build/C/man2/tee.2:129
5779 #, no-wrap
5780 msgid "EXAMPLE"
5781 msgstr "例"
5782
5783 #. type: Plain text
5784 #: build/C/man2/splice.2:225
5785 msgid "See B<tee>(2)."
5786 msgstr "B<tee>(2)  参照。"
5787
5788 #. type: Plain text
5789 #: build/C/man2/splice.2:228
5790 msgid "B<sendfile>(2), B<tee>(2), B<vmsplice>(2)"
5791 msgstr "B<sendfile>(2), B<tee>(2), B<vmsplice>(2)"
5792
5793 #. type: TH
5794 #: build/C/man2/tee.2:26
5795 #, no-wrap
5796 msgid "TEE"
5797 msgstr "TEE"
5798
5799 #. type: Plain text
5800 #: build/C/man2/tee.2:29
5801 msgid "tee - duplicating pipe content"
5802 msgstr "tee - パイプの中身を複製する"
5803
5804 #. type: Plain text
5805 #: build/C/man2/tee.2:36
5806 #, no-wrap
5807 msgid "B<ssize_t tee(int >I<fd_in>B<, int >I<fd_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
5808 msgstr "B<ssize_t tee(int >I<fd_in>B<, int >I<fd_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
5809
5810 #.  Example programs http://brick.kernel.dk/snaps
5811 #.  add a "tee(in, out1, out2)" system call that duplicates the pages
5812 #.  (again, incrementing their reference count, not copying the data) from
5813 #.  one pipe to two other pipes.
5814 #. type: Plain text
5815 #: build/C/man2/tee.2:56
5816 msgid ""
5817 "B<tee>()  duplicates up to I<len> bytes of data from the pipe referred to by "
5818 "the file descriptor I<fd_in> to the pipe referred to by the file descriptor "
5819 "I<fd_out>.  It does not consume the data that is duplicated from I<fd_in>; "
5820 "therefore, that data can be copied by a subsequent B<splice>(2)."
5821 msgstr ""
5822 "B<tee>()  は、ファイルディスクリプタ I<fd_in> が参照するパイプからファイル"
5823 "ディスクリプタ I<fd_out> が参照するパイプへ最大 I<len> バイトのデータを複製す"
5824 "る。 この操作では、複製されるデータは I<fd_in> からは消費されない。したがっ"
5825 "て、これらのデータをこの後の B<splice>(2)  でコピーすることができる。"
5826
5827 #. type: Plain text
5828 #: build/C/man2/tee.2:62
5829 msgid ""
5830 "I<flags> is a series of modifier flags, which share the name space with "
5831 "B<splice>(2)  and B<vmsplice>(2):"
5832 msgstr ""
5833 "I<flags> は一連の修飾フラグであり、 B<splice>(2)  や B<vmsplice>(2)  と共通の"
5834 "名前である。"
5835
5836 #. type: Plain text
5837 #: build/C/man2/tee.2:68
5838 msgid "Currently has no effect for B<tee>(); see B<splice>(2)."
5839 msgstr "現在のところ B<tee>()  では何の効果もない。 B<splice>(2)  参照。"
5840
5841 #.  Not used for vmsplice
5842 #.  May be in the future -- therefore EAGAIN
5843 #. type: Plain text
5844 #: build/C/man2/tee.2:73 build/C/man2/vmsplice.2:91
5845 msgid "Do not block on I/O; see B<splice>(2)  for further details."
5846 msgstr "入出力で停止 (block) しない。詳細は B<splice>(2)  参照。"
5847
5848 #. type: Plain text
5849 #: build/C/man2/tee.2:79
5850 msgid ""
5851 "Currently has no effect for B<tee>(), but may be implemented in the future; "
5852 "see B<splice>(2)."
5853 msgstr ""
5854 "現在のところ B<tee>()  では何の効果もないが、将来的には実装される可能性があ"
5855 "る。 B<splice>(2)  参照。"
5856
5857 #. type: Plain text
5858 #: build/C/man2/tee.2:85
5859 msgid "Unused for B<tee>(); see B<vmsplice>(2)."
5860 msgstr "B<tee>()  では未使用。 B<vmsplice>(2)  参照。"
5861
5862 #. type: Plain text
5863 #: build/C/man2/tee.2:94
5864 msgid ""
5865 "Upon successful completion, B<tee>()  returns the number of bytes that were "
5866 "duplicated between the input and output.  A return value of 0 means that "
5867 "there was no data to transfer, and it would not make sense to block, because "
5868 "there are no writers connected to the write end of the pipe referred to by "
5869 "I<fd_in>."
5870 msgstr ""
5871 "成功して完了すると、 B<tee>()  は入出力間で複製されたバイト数を返す。 返り値 "
5872 "0 はデータの転送が行われなかったことを示す。 この場合、処理を停止 (block) し"
5873 "ても無意味である。 なぜなら、 I<fd_in> が参照するパイプの書き込み側に接続され"
5874 "ている者がいないからである。"
5875
5876 #. type: Plain text
5877 #: build/C/man2/tee.2:100
5878 msgid ""
5879 "On error, B<tee>()  returns -1 and I<errno> is set to indicate the error."
5880 msgstr ""
5881 "エラーの場合、 B<tee>()  は -1 を返し、 I<errno> にエラーを示す値を設定する。"
5882
5883 #. type: Plain text
5884 #: build/C/man2/tee.2:111
5885 msgid ""
5886 "I<fd_in> or I<fd_out> does not refer to a pipe; or I<fd_in> and I<fd_out> "
5887 "refer to the same pipe."
5888 msgstr ""
5889 "I<fd_in> と I<fd_out> のどちらかがパイプを参照していない。もしくは I<fd_in> "
5890 "と I<fd_out> が同じパイプを参照している。"
5891
5892 #. type: Plain text
5893 #: build/C/man2/tee.2:118
5894 msgid "The B<tee>()  system call first appeared in Linux 2.6.17."
5895 msgstr "B<tee>()  システムコールは Linux 2.6.17 で初めて登場した。"
5896
5897 #. type: Plain text
5898 #: build/C/man2/tee.2:129
5899 msgid ""
5900 "Conceptually, B<tee>()  copies the data between the two pipes.  In reality "
5901 "no real data copying takes place though: under the covers, B<tee>()  assigns "
5902 "data in the output by merely grabbing a reference to the input."
5903 msgstr ""
5904 "概念としては、 B<tee>()  は二つのパイプ間でデータのコピーを行う。 しかし、実"
5905 "際には実データのコピーは行われない。 内部では、 B<tee>()  は入力側に対する参"
5906 "照だけを作成することで出力側にデータを 追加する。"
5907
5908 #. type: Plain text
5909 #: build/C/man2/tee.2:135
5910 msgid ""
5911 "The following example implements a basic B<tee>(1)  program using the B<tee>"
5912 "()  system call."
5913 msgstr ""
5914 "以下の例は、 B<tee>()  システムコールを使って、 基本的な B<tee>(1)  プログラ"
5915 "ムを実装したものである。"
5916
5917 #. type: Plain text
5918 #: build/C/man2/tee.2:144
5919 #, no-wrap
5920 msgid ""
5921 "#define _GNU_SOURCE\n"
5922 "#include E<lt>fcntl.hE<gt>\n"
5923 "#include E<lt>stdio.hE<gt>\n"
5924 "#include E<lt>stdlib.hE<gt>\n"
5925 "#include E<lt>unistd.hE<gt>\n"
5926 "#include E<lt>errno.hE<gt>\n"
5927 "#include E<lt>limits.hE<gt>\n"
5928 msgstr ""
5929 "#define _GNU_SOURCE\n"
5930 "#include E<lt>fcntl.hE<gt>\n"
5931 "#include E<lt>stdio.hE<gt>\n"
5932 "#include E<lt>stdlib.hE<gt>\n"
5933 "#include E<lt>unistd.hE<gt>\n"
5934 "#include E<lt>errno.hE<gt>\n"
5935 "#include E<lt>limits.hE<gt>\n"
5936
5937 #. type: Plain text
5938 #: build/C/man2/tee.2:150
5939 #, no-wrap
5940 msgid ""
5941 "int\n"
5942 "main(int argc, char *argv[])\n"
5943 "{\n"
5944 "    int fd;\n"
5945 "    int len, slen;\n"
5946 msgstr ""
5947 "int\n"
5948 "main(int argc, char *argv[])\n"
5949 "{\n"
5950 "    int fd;\n"
5951 "    int len, slen;\n"
5952
5953 #. type: Plain text
5954 #: build/C/man2/tee.2:155
5955 #, no-wrap
5956 msgid ""
5957 "    if (argc != 2) {\n"
5958 "        fprintf(stderr, \"Usage: %s E<lt>fileE<gt>\\en\", argv[0]);\n"
5959 "        exit(EXIT_FAILURE);\n"
5960 "    }\n"
5961 msgstr ""
5962 "    if (argc != 2) {\n"
5963 "        fprintf(stderr, \"Usage: %s E<lt>fileE<gt>\\en\", argv[0]);\n"
5964 "        exit(EXIT_FAILURE);\n"
5965 "    }\n"
5966
5967 #. type: Plain text
5968 #: build/C/man2/tee.2:161
5969 #, no-wrap
5970 msgid ""
5971 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
5972 "    if (fd == -1) {\n"
5973 "        perror(\"open\");\n"
5974 "        exit(EXIT_FAILURE);\n"
5975 "    }\n"
5976 msgstr ""
5977 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
5978 "    if (fd == -1) {\n"
5979 "        perror(\"open\");\n"
5980 "        exit(EXIT_FAILURE);\n"
5981 "    }\n"
5982
5983 #. type: Plain text
5984 #: build/C/man2/tee.2:168
5985 #, no-wrap
5986 msgid ""
5987 "    do {\n"
5988 "        /*\n"
5989 "         * tee stdin to stdout.\n"
5990 "         */\n"
5991 "        len = tee(STDIN_FILENO, STDOUT_FILENO,\n"
5992 "                  INT_MAX, SPLICE_F_NONBLOCK);\n"
5993 msgstr ""
5994 "    do {\n"
5995 "        /*\n"
5996 "         * tee stdin to stdout.\n"
5997 "         */\n"
5998 "        len = tee(STDIN_FILENO, STDOUT_FILENO,\n"
5999 "                  INT_MAX, SPLICE_F_NONBLOCK);\n"
6000
6001 #. type: Plain text
6002 #: build/C/man2/tee.2:177
6003 #, no-wrap
6004 msgid ""
6005 "        if (len E<lt> 0) {\n"
6006 "            if (errno == EAGAIN)\n"
6007 "                continue;\n"
6008 "            perror(\"tee\");\n"
6009 "            exit(EXIT_FAILURE);\n"
6010 "        } else\n"
6011 "            if (len == 0)\n"
6012 "                break;\n"
6013 msgstr ""
6014 "        if (len E<lt> 0) {\n"
6015 "            if (errno == EAGAIN)\n"
6016 "                continue;\n"
6017 "            perror(\"tee\");\n"
6018 "            exit(EXIT_FAILURE);\n"
6019 "        } else\n"
6020 "            if (len == 0)\n"
6021 "                break;\n"
6022
6023 #. type: Plain text
6024 #: build/C/man2/tee.2:191
6025 #, no-wrap
6026 msgid ""
6027 "        /*\n"
6028 "         * Consume stdin by splicing it to a file.\n"
6029 "         */\n"
6030 "        while (len E<gt> 0) {\n"
6031 "            slen = splice(STDIN_FILENO, NULL, fd, NULL,\n"
6032 "                          len, SPLICE_F_MOVE);\n"
6033 "            if (slen E<lt> 0) {\n"
6034 "                perror(\"splice\");\n"
6035 "                break;\n"
6036 "            }\n"
6037 "            len -= slen;\n"
6038 "        }\n"
6039 "    } while (1);\n"
6040 msgstr ""
6041 "        /*\n"
6042 "         * Consume stdin by splicing it to a file.\n"
6043 "         */\n"
6044 "        while (len E<gt> 0) {\n"
6045 "            slen = splice(STDIN_FILENO, NULL, fd, NULL,\n"
6046 "                          len, SPLICE_F_MOVE);\n"
6047 "            if (slen E<lt> 0) {\n"
6048 "                perror(\"splice\");\n"
6049 "                break;\n"
6050 "            }\n"
6051 "            len -= slen;\n"
6052 "        }\n"
6053 "    } while (1);\n"
6054
6055 #. type: Plain text
6056 #: build/C/man2/tee.2:195
6057 #, no-wrap
6058 msgid ""
6059 "    close(fd);\n"
6060 "    exit(EXIT_SUCCESS);\n"
6061 "}\n"
6062 msgstr ""
6063 "    close(fd);\n"
6064 "    exit(EXIT_SUCCESS);\n"
6065 "}\n"
6066
6067 #. type: Plain text
6068 #: build/C/man2/tee.2:198
6069 msgid "B<splice>(2), B<vmsplice>(2)"
6070 msgstr "B<splice>(2), B<vmsplice>(2)"
6071
6072 #. type: TH
6073 #: build/C/man2/vm86.2:26
6074 #, no-wrap
6075 msgid "VM86"
6076 msgstr "VM86"
6077
6078 #. type: TH
6079 #: build/C/man2/vm86.2:26
6080 #, no-wrap
6081 msgid "2009-02-20"
6082 msgstr "2009-02-20"
6083
6084 #. type: Plain text
6085 #: build/C/man2/vm86.2:29
6086 msgid "vm86old, vm86 - enter virtual 8086 mode"
6087 msgstr "vm86old, vm86 - 仮想 8086 モードへ移行する"
6088
6089 #. type: Plain text
6090 #: build/C/man2/vm86.2:31
6091 msgid "B<#include E<lt>sys/vm86.hE<gt>>"
6092 msgstr "B<#include E<lt>sys/vm86.hE<gt>>"
6093
6094 #. type: Plain text
6095 #: build/C/man2/vm86.2:33
6096 msgid "B<int vm86old(struct vm86_struct *>I<info>B<);>"
6097 msgstr "B<int vm86old(struct vm86_struct *>I<info>B<);>"
6098
6099 #. type: Plain text
6100 #: build/C/man2/vm86.2:35
6101 msgid "B<int vm86(unsigned long >I<fn>B<, struct vm86plus_struct *>I<v86>B<);>"
6102 msgstr ""
6103 "B<int vm86(unsigned long >I<fn>B<, struct vm86plus_struct *>I<v86>B<);>"
6104
6105 #. type: Plain text
6106 #: build/C/man2/vm86.2:46
6107 msgid ""
6108 "The system call B<vm86>()  was introduced in Linux 0.97p2.  In Linux 2.1.15 "
6109 "and 2.0.28 it was renamed to B<vm86old>(), and a new B<vm86>()  was "
6110 "introduced.  The definition of I<struct vm86_struct> was changed in 1.1.8 "
6111 "and 1.1.9."
6112 msgstr ""
6113 "B<vm86>()  システムコールは Linux 0.97p2 で導入された。 これは Linux 2.1.15 "
6114 "と 2.0.28 で B<vm86old>()  に名前が変更され、 新しい B<vm86>()  が導入され"
6115 "た。 I<struct vm86_struct> の定義は 1.1.8 と 1.1.9 で変更された。"
6116
6117 #. type: Plain text
6118 #: build/C/man2/vm86.2:50
6119 msgid ""
6120 "These calls cause the process to enter VM86 mode (virtual-8086 in Intel "
6121 "literature), and are used by B<dosemu>."
6122 msgstr ""
6123 "これらのコールによってプロセスは VM86 モード (Intel の文書では仮想 8086 モー"
6124 "ド) へと移行する。 これらのコールは B<dosemu> で使用される。"
6125
6126 #. type: Plain text
6127 #: build/C/man2/vm86.2:52
6128 msgid "VM86 mode is an emulation of real mode within a protected mode task."
6129 msgstr ""
6130 "VM86 モードはプロテクトモードタスクにおける リアルモードのエミュレーションで"
6131 "ある。"
6132
6133 #. type: Plain text
6134 #: build/C/man2/vm86.2:62
6135 msgid ""
6136 "This return value is specific to i386 and indicates a problem with getting "
6137 "userspace data."
6138 msgstr ""
6139 "この返り値は i386 固有のものであり、 ユーザー空間のデータを取得する際に問題が"
6140 "あったことを示す。"
6141
6142 #. type: Plain text
6143 #: build/C/man2/vm86.2:66
6144 msgid ""
6145 "This return value indicates the call is not implemented on the present "
6146 "architecture."
6147 msgstr ""
6148 "この返り値は、このコールが現在のアーキテクチャで実装されていないことを示す。"
6149
6150 #. type: Plain text
6151 #: build/C/man2/vm86.2:71
6152 msgid ""
6153 "Saved kernel stack exists.  (This is a kernel sanity check; the saved stack "
6154 "should only exist within vm86 mode itself.)"
6155 msgstr ""
6156 "保存されたカーネルスタックが既に存在している。(これはカーネルが通常の 状態で"
6157 "あるかをチェックしている。保存されたスタックは vm86 モードで しか存在しな"
6158 "い。)"
6159
6160 #. type: Plain text
6161 #: build/C/man2/vm86.2:73
6162 msgid ""
6163 "This call is specific to Linux on 32-bit Intel processors, and should not be "
6164 "used in programs intended to be portable."
6165 msgstr ""
6166 "この関数は 32 ビット Intel プロセッサ上の Linux 特有の関数であり、 移植を意図"
6167 "したプログラムでは使用すべきでない。"
6168
6169 #. type: TH
6170 #: build/C/man2/vmsplice.2:26
6171 #, no-wrap
6172 msgid "VMSPLICE"
6173 msgstr "VMSPLICE"
6174
6175 #. type: Plain text
6176 #: build/C/man2/vmsplice.2:29
6177 msgid "vmsplice - splice user pages into a pipe"
6178 msgstr "vmsplice - ユーザ・ページをパイプに継ぎ合わせる"
6179
6180 #. type: Plain text
6181 #: build/C/man2/vmsplice.2:34
6182 #, no-wrap
6183 msgid ""
6184 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
6185 "B<#include E<lt>fcntl.hE<gt>>\n"
6186 "B<#include E<lt>sys/uio.hE<gt>>\n"
6187 msgstr ""
6188 "B<#define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
6189 "B<#include E<lt>fcntl.hE<gt>>\n"
6190 "B<#include E<lt>sys/uio.hE<gt>>\n"
6191
6192 #. type: Plain text
6193 #: build/C/man2/vmsplice.2:37
6194 #, no-wrap
6195 msgid ""
6196 "B<ssize_t vmsplice(int >I<fd>B<, const struct iovec *>I<iov>B<,>\n"
6197 "B<                 unsigned long >I<nr_segs>B<, unsigned int >I<flags>B<);>\n"
6198 msgstr ""
6199 "B<ssize_t vmsplice(int >I<fd>B<, const struct iovec *>I<iov>B<,>\n"
6200 "B<                 unsigned long >I<nr_segs>B<, unsigned int >I<flags>B<);>\n"
6201
6202 #.  Linus: vmsplice() system call to basically do a "write to
6203 #.  the buffer", but using the reference counting and VM traversal
6204 #.  to actually fill the buffer. This means that the user needs to
6205 #.  be careful not to reuse the user-space buffer it spliced into
6206 #.  the kernel-space one (contrast this to "write()", which copies
6207 #.  the actual data, and you can thus reuse the buffer immediately
6208 #.  after a successful write), but that is often easy to do.
6209 #. type: Plain text
6210 #: build/C/man2/vmsplice.2:57
6211 msgid ""
6212 "The B<vmsplice>()  system call maps I<nr_segs> ranges of user memory "
6213 "described by I<iov> into a pipe.  The file descriptor I<fd> must refer to a "
6214 "pipe."
6215 msgstr ""
6216 "B<vmsplice>()  システムコールは、 I<iov> で指定されたユーザ・メモリの "
6217 "I<nr_segs> の範囲をパイプにマッピングする。 I<fd> はパイプを参照していなけれ"
6218 "ばならない。"
6219
6220 #. type: Plain text
6221 #: build/C/man2/vmsplice.2:64
6222 msgid ""
6223 "The pointer I<iov> points to an array of I<iovec> structures as defined in "
6224 "I<E<lt>sys/uio.hE<gt>>:"
6225 msgstr ""
6226 "ポインタ I<iov> は I<iovec> 構造体の配列を指す。 I<iovec> 構造体は "
6227 "I<E<lt>sys/uio.hE<gt>> で以下のように定義されている:"
6228
6229 #. type: Plain text
6230 #: build/C/man2/vmsplice.2:71
6231 #, no-wrap
6232 msgid ""
6233 "struct iovec {\n"
6234 "    void  *iov_base;            /* Starting address */\n"
6235 "    size_t iov_len;             /* Number of bytes */\n"
6236 "};\n"
6237 msgstr ""
6238 "struct iovec {\n"
6239 "    void  *iov_base;            /* 開始アドレス */\n"
6240 "    size_t iov_len;             /* バイト数 */\n"
6241 "};\n"
6242
6243 #. type: Plain text
6244 #: build/C/man2/vmsplice.2:84
6245 msgid "Unused for B<vmsplice>(); see B<splice>(2)."
6246 msgstr "B<vmsplice>()  では未使用。 B<splice>(2)  参照。"
6247
6248 #. type: Plain text
6249 #: build/C/man2/vmsplice.2:97
6250 msgid ""
6251 "Currently has no effect for B<vmsplice>(), but may be implemented in the "
6252 "future; see B<splice>(2)."
6253 msgstr ""
6254 "現在のところ B<vmsplice>()  では何の効果もないが、将来的には実装される可能性"
6255 "がある。 B<splice>(2)  参照。"
6256
6257 #.  FIXME Explain the following line in a little more detail:
6258 #.  .... if we expect to later SPLICE_F_MOVE to the cache.
6259 #. type: Plain text
6260 #: build/C/man2/vmsplice.2:113
6261 msgid ""
6262 "The user pages are a gift to the kernel.  The application may not modify "
6263 "this memory ever, or page cache and on-disk data may differ.  Gifting pages "
6264 "to the kernel means that a subsequent B<splice>(2)  B<SPLICE_F_MOVE> can "
6265 "successfully move the pages; if this flag is not specified, then a "
6266 "subsequent B<splice>(2)  B<SPLICE_F_MOVE> must copy the pages.  Data must "
6267 "also be properly page aligned, both in memory and length."
6268 msgstr ""
6269 "ユーザ・ページがカーネルへ渡すもの (gift) であることを示す。 アプリケーション"
6270 "はこのメモリを絶対に変更してはならない。 さもなければ、ページキャッシュとディ"
6271 "スク上のデータは 一致しなくなるだろう。 ページをカーネルに渡すと、この次の "
6272 "B<splice>(2)  B<SPLICE_F_MOVE> でそのページの移動を行うことができる。 このフ"
6273 "ラグが指定されなかった場合、この次の B<splice>(2)  B<SPLICE_F_MOVE> でその"
6274 "ページのコピーを行わなければならない。 データはメモリ上でページ境界にあってい"
6275 "なければならず、 長さもページ境界の倍数でなければならない。"
6276
6277 #. type: Plain text
6278 #: build/C/man2/vmsplice.2:122
6279 msgid ""
6280 "Upon successful completion, B<vmsplice>()  returns the number of bytes "
6281 "transferred to the pipe.  On error, B<vmsplice>()  returns -1 and I<errno> "
6282 "is set to indicate the error."
6283 msgstr ""
6284 "成功して完了すると、 B<vmsplice>()  はパイプに転送したバイト数を返す。 エラー"
6285 "の場合、 B<vmplice>()  は -1 を返し、 I<errno> をエラーを示す値に設定する。"
6286
6287 #. type: Plain text
6288 #: build/C/man2/vmsplice.2:127
6289 msgid "I<fd> either not valid, or doesn't refer to a pipe."
6290 msgstr "I<fd> が有効でない、もしくはパイプを参照していない。"
6291
6292 #. type: Plain text
6293 #: build/C/man2/vmsplice.2:135
6294 msgid ""
6295 "I<nr_segs> is 0 or greater than B<IOV_MAX>; or memory not aligned if "
6296 "B<SPLICE_F_GIFT> set."
6297 msgstr ""
6298 "I<nr_segs> が 0 もしくは B<IOV_MAX> よりも大きい。または B<SPLICE_F_GIFT> が"
6299 "設定されたがメモリがページ境界にあっていない。"
6300
6301 #. type: Plain text
6302 #: build/C/man2/vmsplice.2:142
6303 msgid "The B<vmsplice>()  system call first appeared in Linux 2.6.17."
6304 msgstr "B<vmsplice>()  システムコールは Linux 2.6.17 で初めて登場した。"
6305
6306 #. type: Plain text
6307 #: build/C/man2/vmsplice.2:153
6308 msgid ""
6309 "B<vmsplice>()  follows the other vectorized read/write type functions when "
6310 "it comes to limitations on number of segments being passed in.  This limit "
6311 "is B<IOV_MAX> as defined in I<E<lt>limits.hE<gt>>.  At the time of this "
6312 "writing, that limit is 1024."
6313 msgstr ""
6314 "指定されたセグメント数が上限に達した場合、 B<vmsplice>()  は他のベクトル形式"
6315 "の read/write を行う関数と同じ動作をする。 上限は B<IOV_MAX> であり、 "
6316 "I<E<lt>limits.hE<gt>> で定義されている。 このドキュメントを書いた時点での値"
6317 "は 1024 である。"
6318
6319 #. type: Plain text
6320 #: build/C/man2/vmsplice.2:155
6321 msgid "B<splice>(2), B<tee>(2)"
6322 msgstr "B<splice>(2), B<tee>(2)"
6323
6324 #~ msgid "COLOPHON"
6325 #~ msgstr "この文書について"
6326
6327 #, fuzzy
6328 #~| msgid ""
6329 #~| "This page is part of release 3.37 of the Linux I<man-pages> project.  A "
6330 #~| "description of the project, and information about reporting bugs, can be "
6331 #~| "found at http://www.kernel.org/doc/man-pages/."
6332 #~ msgid ""
6333 #~ "This page is part of release 3.38 of the Linux I<man-pages> project.  A "
6334 #~ "description of the project, and information about reporting bugs, can be "
6335 #~ "found at http://www.kernel.org/doc/man-pages/."
6336 #~ msgstr ""
6337 #~ "この man ページは Linux I<man-pages> プロジェクトのリリース 3.37 の一部で"
6338 #~ "ある。\n"
6339 #~ "プロジェクトの説明とバグ報告に関する情報は\n"
6340 #~ "http://www.kernel.org/doc/man-pages/ に書かれている。"
6341
6342 #, fuzzy
6343 #~| msgid "2009-03-30"
6344 #~ msgid "2012-03-24"
6345 #~ msgstr "2009-03-30"
6346
6347 #, fuzzy
6348 #~| msgid ""
6349 #~| "Indicates that this process is to be traced by its parent.  Any signal "
6350 #~| "(except B<SIGKILL>)  delivered to this process will cause it to stop and "
6351 #~| "its parent to be notified via B<wait>(2).  Also, all subsequent calls to "
6352 #~| "B<execve>(2)  by this process will cause a B<SIGTRAP> to be sent to it, "
6353 #~| "giving the parent a chance to gain control before the new program begins "
6354 #~| "execution.  A process probably shouldn't make this request if its parent "
6355 #~| "isn't expecting to trace it.  (I<pid>, I<addr>, and I<data> are ignored.)"
6356 #~ msgid ""
6357 #~ "Indicate that this process is to be traced by its parent.  Any signal "
6358 #~ "(except B<SIGKILL>)  delivered to this process will cause it to stop and "
6359 #~ "its parent to be notified via B<waitpid>(2).  In addition, all subsequent "
6360 #~ "calls to B<execve>(2)  by the traced process will cause a B<SIGTRAP> to "
6361 #~ "be sent to it, giving the parent a chance to gain control before the new "
6362 #~ "program begins execution.  A process probably shouldn't make this request "
6363 #~ "if its parent isn't expecting to trace it.  (I<pid>, I<addr>, and I<data> "
6364 #~ "are ignored.)"
6365 #~ msgstr ""
6366 #~ "このプロセスが親プロセスによってトレースされることを表す。 このプロセスに "
6367 #~ "(B<SIGKILL> 以外の) シグナルが配送されると、 プロセスは停止し、親プロセス"
6368 #~ "に B<wait>(2)  を通じて通知される。 また、これ以降はこのプロセスが "
6369 #~ "B<execve>(2)  を呼び出す度に B<SIGTRAP> が送信されるようになる。 これに"
6370 #~ "よって、親プロセスは 新しいプログラムが実行を開始する前に制御することがで"
6371 #~ "きる。 親プロセスが自プロセスをトレースするつもりがない場合には、 おそらく"
6372 #~ "このプロセスは本要求を行うべきではないだろう。 (I<pid>, I<addr>, I<data> "
6373 #~ "は無視される。)"
6374
6375 #, fuzzy
6376 #~| msgid "2009-03-30"
6377 #~ msgid "2012-03-06"
6378 #~ msgstr "2009-03-30"
6379
6380 #~ msgid "1997-07-16"
6381 #~ msgstr "1997-07-16"
6382
6383 #~ msgid ""
6384 #~ "Stop the child at the next B<execve>(2)  call with I<SIGTRAP | "
6385 #~ "PTRACE_EVENT_EXEC\\ E<lt>E<lt>\\ 8>."
6386 #~ msgstr ""
6387 #~ "次の B<execve>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_EXEC\\ E<lt>E<lt>"
6388 #~ "\\ 8> で子プロセスの動作を停止させる。"
6389
6390 #~ msgid ""
6391 #~ "Stop the child at the completion of the next B<vfork>(2)  call with "
6392 #~ "I<SIGTRAP | PTRACE_EVENT_VFORK_DONE\\ E<lt>E<lt>\\ 8>."
6393 #~ msgstr ""
6394 #~ "次の B<vfork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_VFORK_DONE\\ "
6395 #~ "E<lt>E<lt>\\ 8> で子プロセスの動作を停止させる。"
6396
6397 #~ msgid ""
6398 #~ "Attaches to the process specified in I<pid>, making it a traced \"child\" "
6399 #~ "of the calling process; the behavior of the child is as if it had done a "
6400 #~ "B<PTRACE_TRACEME>.  The calling process actually becomes the parent of "
6401 #~ "the child process for most purposes (e.g., it will receive notification "
6402 #~ "of child events and appears in B<ps>(1)  output as the child's parent), "
6403 #~ "but a B<getppid>(2)  by the child will still return the PID of the "
6404 #~ "original parent.  The child is sent a B<SIGSTOP>, but will not "
6405 #~ "necessarily have stopped by the completion of this call; use B<wait>(2)  "
6406 #~ "to wait for the child to stop.  (I<addr> and I<data> are ignored.)"
6407 #~ msgstr ""
6408 #~ "I<pid> で指定されたプロセスに接続 (attach) し、それを呼び出し元のプロセス"
6409 #~ "の 子プロセスとしてトレースできるようにする。子プロセスは "
6410 #~ "B<PTRACE_TRACEME> したかのように振舞う。呼び出し元のプロセスはそのほとんど"
6411 #~ "の目的において、 その子プロセスの実際の親になる (例えば、子プロセスのイベ"
6412 #~ "ントの 通知を受けとったり、 B<ps>(1)  で親として表示されたりする)。しか"
6413 #~ "し、子プロセスで B<getppid>(2)  を実行した場合には元の親プロセスの PID が"
6414 #~ "返される。 子プロセスには B<SIGSTOP> が送られるが、この呼び出しが完了する"
6415 #~ "までに 必ずしも停止するとは限らない。子プロセスの停止を待つには B<wait>"
6416 #~ "(2)  を使用すること。(I<addr> と I<data> は無視される。)"
6417
6418 #~ msgid ""
6419 #~ "Tracing causes a few subtle differences in the semantics of traced "
6420 #~ "processes.  For example, if a process is attached to with "
6421 #~ "B<PTRACE_ATTACH>, its original parent can no longer receive notification "
6422 #~ "via B<wait>(2)  when it stops, and there is no way for the new parent to "
6423 #~ "effectively simulate this notification."
6424 #~ msgstr ""
6425 #~ "トレースすることによってトレースされるプロセスの動作に些細な違いが 起こる"
6426 #~ "ことがある。例えば、プロセスが B<PTRACE_ATTACH> によって接続された場合に"
6427 #~ "は、そのプロセスが停止した時でも本来の親は B<wait>(2)  を使って通知を受け"
6428 #~ "ることができず、新しい親が効率よく この通知を真似る方法もない。"
6429
6430 #~ msgid ""
6431 #~ "When the parent receives an event with B<PTRACE_EVENT_*> set, the child "
6432 #~ "is not in the normal signal delivery path.  This means the parent cannot "
6433 #~ "do B<ptrace>(PTRACE_CONT)  with a signal or B<ptrace>(PTRACE_KILL).  "
6434 #~ "B<kill>(2)  with a B<SIGKILL> signal can be used instead to kill the "
6435 #~ "child process after receiving one of these messages."
6436 #~ msgstr ""
6437 #~ "親プロセスが B<PTRACE_EVENT_*> がセットされたイベントを受信した場合、 子プ"
6438 #~ "ロセスは通常通りのシグナル配送が行われる状態にない。 つまり、親プロセス"
6439 #~ "が、 シグナルにより B<ptrace>(PTRACE_CONT)  を行ったり、 B<ptrace>"
6440 #~ "(PTRACE_KILL)  を行ったりできないということである。 こららのメッセージの受"
6441 #~ "信後は、子プロセスを終了 (kill) するのに、 シグナル B<SIGKILL> を指定して "
6442 #~ "B<kill>(2)  を行う方法を代わりに使用できる。"
6443
6444 #~ msgid ""
6445 #~ "The SunOS man page describes B<ptrace>()  as \"unique and arcane\", which "
6446 #~ "it is.  The proc-based debugging interface present in Solaris 2 "
6447 #~ "implements a superset of B<ptrace>()  functionality in a more powerful "
6448 #~ "and uniform way."
6449 #~ msgstr ""
6450 #~ "SunOS のマニュアル・ページには B<ptrace>()  は「独特で不可解」と記述されて"
6451 #~ "おり、まさしくそうである。 Solaris 2 では proc ベースの デバッグのインター"
6452 #~ "フェースとして B<ptrace>()  の上位互換関数が実装され、より強力で一貫性のあ"
6453 #~ "るものとなっている。"
6454
6455 #~ msgid "B<#include E<lt>sys/quota.hE<gt>>\n"
6456 #~ msgstr "B<#include E<lt>sys/quota.hE<gt>>\n"
6457
6458 #~ msgid ""
6459 #~ "The second argument I<special> is the block special device these quota "
6460 #~ "apply to.  It must be mounted."
6461 #~ msgstr ""
6462 #~ "二番目の引き数 I<special> は quota を適用するデバイスのブロック・スペシャ"
6463 #~ "ル・ファイルである。 そのデバイスはマウントされていなくてはならない。"
6464
6465 #~ msgid ""
6466 #~ "The third argument I<id> is the user or group ID these quota apply to "
6467 #~ "(when relevant)."
6468 #~ msgstr ""
6469 #~ "三番目の引き数 I<id> には、(必要な場合に) quota を適用するユーザーもしくは"
6470 #~ "グループの ID を指定する。"
6471
6472 #~ msgid ""
6473 #~ "The fourth argument I<addr> is the address of a data structure, depending "
6474 #~ "on the command."
6475 #~ msgstr ""
6476 #~ "四番目の引き数 I<addr> には、コマンドごとに異ったデータ構造体のアドレスを"
6477 #~ "指定する。"
6478
6479 #~ msgid ""
6480 #~ "Enable quota.  The I<addr> argument is the pathname of the file "
6481 #~ "containing the quota for the file system."
6482 #~ msgstr ""
6483 #~ "quota を有効にする。 I<addr> 引き数には、そのファイル・システムの quota が"
6484 #~ "記録されているファイルの パス名を指定する。"
6485
6486 #~ msgid "Disable quota."
6487 #~ msgstr "quota を無効にする。"
6488
6489 #~ msgid "Set limits and current usage; I<addr> is as before."
6490 #~ msgstr "制限値と現在の使用量を設定する: I<addr> は同上。"
6491
6492 #~ msgid "Set limits; I<addr> is as before."
6493 #~ msgstr "制限値を設定する; I<addr> は同上。"
6494
6495 #~ msgid "B<Q_SETUSE>"
6496 #~ msgstr "B<Q_SETUSE>"
6497
6498 #~ msgid "Set usage."
6499 #~ msgstr "使用量を設定する。"
6500
6501 #~ msgid "Sync disk copy of a file system's quota."
6502 #~ msgstr "ファイル・システムの quota ファイルをディスクと同期させる。"
6503
6504 #~ msgid "Get collected stats."
6505 #~ msgstr "収集された統計を取得する。"
6506
6507 #~ msgid ""
6508 #~ "On success, B<quotactl>()  returns 0.  On error, -1 is returned, and "
6509 #~ "I<errno> is set appropriately."
6510 #~ msgstr ""
6511 #~ "B<quotactl>()  は、成功時には 0 を返す。エラー時は、-1 を返すとともに、 "
6512 #~ "I<errno> が適切な値に設定される。"
6513
6514 #~ msgid "B<Q_QUOTAON> was asked, but quotas were enabled already."
6515 #~ msgstr "B<Q_QUOTAON> の要求がなされたが、quota(s) は既に有効になっている。"
6516
6517 #~ msgid "Bad I<addr> value."
6518 #~ msgstr "I<addr> の値に誤りがある。"
6519
6520 #~ msgid ""
6521 #~ "I<type> is not a known quota type.  Or, I<special> could not be found."
6522 #~ msgstr ""
6523 #~ "I<type> が既知の quota の形式ではない。もしくは、 I<special> デバイスが見"
6524 #~ "付からなかった。"
6525
6526 #~ msgid "Cannot read or write the quota file."
6527 #~ msgstr "quota ファイルへの読み書きが出来ない。"
6528
6529 #~ msgid "B<EMFILE>"
6530 #~ msgstr "B<EMFILE>"
6531
6532 #~ msgid "Too many open files: cannot open quota file."
6533 #~ msgstr "ファイルをオープンしすぎている: quota ファイルをオープン出来ない。"
6534
6535 #~ msgid "I<special> cannot be found in the mount table."
6536 #~ msgstr "I<special> がマウント・テーブル内に見当たらない。"
6537
6538 #~ msgid "B<ENOPKG>"
6539 #~ msgstr "B<ENOPKG>"
6540
6541 #~ msgid "The kernel was compiled without quota support."
6542 #~ msgstr "quota を使用可にしてカーネルをコンパイルしていない。"
6543
6544 #~ msgid ""
6545 #~ "The process was not root (for the file system), and B<Q_GETQUOTA> was "
6546 #~ "asked for another I<id> than that of the process itself, or anything "
6547 #~ "other than B<Q_GETSTATS> or B<Q_SYNC> was asked."
6548 #~ msgstr ""
6549 #~ "プロセスが (そのファイル・システムの) root のものではなく、 かつプロセス自"
6550 #~ "身のものとは異なる I<id> に対して B<Q_GETQUOTA> 要求を行なった。 もしく"
6551 #~ "は、 B<Q_GETSTATS>, B<Q_SYNC> 以外の要求がなされた。"
6552
6553 #~ msgid ""
6554 #~ "B<Q_GETQUOTA> or B<Q_SETQUOTA> or B<Q_SETUSE> or B<Q_SETQLIM> was asked "
6555 #~ "for a file system that didn't have quota enabled."
6556 #~ msgstr ""
6557 #~ "quota が有効になっていないファイル・システムに対して B<Q_GETQUOTA>, "
6558 #~ "B<Q_SETQUOTA>, B<Q_SETUSE>, B<Q_SETQLIM> のいずれかの要求がなされた。"
6559
6560 #~ msgid "BSD."
6561 #~ msgstr "BSD."