OSDN Git Service

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