OSDN Git Service

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