OSDN Git Service

(split) LDP: Update POT and ja.po to LDP v3.54
[linuxjm/LDP_man-pages.git] / po4a / semaphore / 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: 2013-09-28 04:05+0900\n"
10 "PO-Revision-Date: 2013-08-15 20:19+0900\n"
11 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12 "Language-Team: LANGUAGE <LL@li.org>\n"
13 "Language: \n"
14 "MIME-Version: 1.0\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
17
18 #. type: TH
19 #: build/C/man3/sem_close.3:26
20 #, no-wrap
21 msgid "SEM_CLOSE"
22 msgstr "SEM_CLOSE"
23
24 #. type: TH
25 #: build/C/man3/sem_close.3:26 build/C/man3/sem_destroy.3:26
26 #: build/C/man3/sem_getvalue.3:26 build/C/man3/sem_init.3:26
27 #: build/C/man3/sem_open.3:26 build/C/man7/sem_overview.7:26
28 #: build/C/man3/sem_post.3:26 build/C/man3/sem_unlink.3:26
29 #: build/C/man3/sem_wait.3:26
30 #, no-wrap
31 msgid "2012-05-13"
32 msgstr "2012-05-13"
33
34 #. type: TH
35 #: build/C/man3/sem_close.3:26 build/C/man3/sem_destroy.3:26
36 #: build/C/man3/sem_getvalue.3:26 build/C/man3/sem_init.3:26
37 #: build/C/man3/sem_open.3:26 build/C/man7/sem_overview.7:26
38 #: build/C/man3/sem_post.3:26 build/C/man3/sem_unlink.3:26
39 #: build/C/man3/sem_wait.3:26 build/C/man2/semctl.2:41
40 #: build/C/man2/semget.2:36 build/C/man2/semop.2:35
41 #, no-wrap
42 msgid "Linux"
43 msgstr "Linux"
44
45 #. type: TH
46 #: build/C/man3/sem_close.3:26 build/C/man3/sem_destroy.3:26
47 #: build/C/man3/sem_getvalue.3:26 build/C/man3/sem_init.3:26
48 #: build/C/man3/sem_open.3:26 build/C/man7/sem_overview.7:26
49 #: build/C/man3/sem_post.3:26 build/C/man3/sem_unlink.3:26
50 #: build/C/man3/sem_wait.3:26 build/C/man2/semctl.2:41
51 #: build/C/man2/semget.2:36 build/C/man2/semop.2:35
52 #, no-wrap
53 msgid "Linux Programmer's Manual"
54 msgstr "Linux Programmer's Manual"
55
56 #. type: SH
57 #: build/C/man3/sem_close.3:27 build/C/man3/sem_destroy.3:27
58 #: build/C/man3/sem_getvalue.3:27 build/C/man3/sem_init.3:27
59 #: build/C/man3/sem_open.3:27 build/C/man7/sem_overview.7:27
60 #: build/C/man3/sem_post.3:27 build/C/man3/sem_unlink.3:27
61 #: build/C/man3/sem_wait.3:27 build/C/man2/semctl.2:42
62 #: build/C/man2/semget.2:37 build/C/man2/semop.2:36
63 #, no-wrap
64 msgid "NAME"
65 msgstr "名前"
66
67 #. type: Plain text
68 #: build/C/man3/sem_close.3:29
69 msgid "sem_close - close a named semaphore"
70 msgstr "sem_close - 名前付きセマフォをクローズする"
71
72 #. type: SH
73 #: build/C/man3/sem_close.3:29 build/C/man3/sem_destroy.3:29
74 #: build/C/man3/sem_getvalue.3:29 build/C/man3/sem_init.3:29
75 #: build/C/man3/sem_open.3:29 build/C/man3/sem_post.3:29
76 #: build/C/man3/sem_unlink.3:29 build/C/man3/sem_wait.3:29
77 #: build/C/man2/semctl.2:44 build/C/man2/semget.2:39 build/C/man2/semop.2:38
78 #, no-wrap
79 msgid "SYNOPSIS"
80 msgstr "書式"
81
82 #. type: Plain text
83 #: build/C/man3/sem_close.3:32 build/C/man3/sem_destroy.3:32
84 #: build/C/man3/sem_getvalue.3:32 build/C/man3/sem_init.3:32
85 #: build/C/man3/sem_post.3:32 build/C/man3/sem_unlink.3:32
86 #: build/C/man3/sem_wait.3:32
87 #, no-wrap
88 msgid "B<#include E<lt>semaphore.hE<gt>>\n"
89 msgstr "B<#include E<lt>semaphore.hE<gt>>\n"
90
91 #. type: Plain text
92 #: build/C/man3/sem_close.3:34
93 #, no-wrap
94 msgid "B<int sem_close(sem_t *>I<sem>B<);>\n"
95 msgstr "B<int sem_close(sem_t *>I<sem>B<);>\n"
96
97 #. type: Plain text
98 #: build/C/man3/sem_close.3:37 build/C/man3/sem_destroy.3:37
99 #: build/C/man3/sem_getvalue.3:37 build/C/man3/sem_init.3:37
100 #: build/C/man3/sem_open.3:41 build/C/man3/sem_post.3:37
101 #: build/C/man3/sem_unlink.3:37 build/C/man3/sem_wait.3:41
102 msgid "Link with I<-pthread>."
103 msgstr "I<-pthread> とリンクする。"
104
105 #. type: SH
106 #: build/C/man3/sem_close.3:37 build/C/man3/sem_destroy.3:37
107 #: build/C/man3/sem_getvalue.3:37 build/C/man3/sem_init.3:37
108 #: build/C/man3/sem_open.3:41 build/C/man7/sem_overview.7:29
109 #: build/C/man3/sem_post.3:37 build/C/man3/sem_unlink.3:37
110 #: build/C/man3/sem_wait.3:49 build/C/man2/semctl.2:52
111 #: build/C/man2/semget.2:49 build/C/man2/semop.2:57
112 #, no-wrap
113 msgid "DESCRIPTION"
114 msgstr "説明"
115
116 #. type: Plain text
117 #: build/C/man3/sem_close.3:43
118 msgid ""
119 "B<sem_close>()  closes the named semaphore referred to by I<sem>, allowing "
120 "any resources that the system has allocated to the calling process for this "
121 "semaphore to be freed."
122 msgstr ""
123 "B<sem_close>()  は I<sem> が参照する名前付きセマフォをクローズし、 このセマ"
124 "フォ用に呼び出し元プロセスにシステムが割り当てていた リソースを解放できるよう"
125 "にする。"
126
127 #. type: SH
128 #: build/C/man3/sem_close.3:43 build/C/man3/sem_destroy.3:55
129 #: build/C/man3/sem_getvalue.3:54 build/C/man3/sem_init.3:77
130 #: build/C/man3/sem_open.3:104 build/C/man3/sem_post.3:45
131 #: build/C/man3/sem_unlink.3:44 build/C/man3/sem_wait.3:108
132 #: build/C/man2/semctl.2:340 build/C/man2/semget.2:157
133 #: build/C/man2/semop.2:309
134 #, no-wrap
135 msgid "RETURN VALUE"
136 msgstr "返り値"
137
138 #. type: Plain text
139 #: build/C/man3/sem_close.3:49
140 msgid ""
141 "On success B<sem_close>()  returns 0; on error, -1 is returned, with "
142 "I<errno> set to indicate the error."
143 msgstr ""
144 "成功すると、 B<sem_close>()  は 0 を返す。エラーの場合、-1 を返し、 I<errno> "
145 "にエラーを示す値をセットする。"
146
147 #. type: SH
148 #: build/C/man3/sem_close.3:49 build/C/man3/sem_destroy.3:61
149 #: build/C/man3/sem_getvalue.3:60 build/C/man3/sem_init.3:83
150 #: build/C/man3/sem_open.3:116 build/C/man3/sem_post.3:52
151 #: build/C/man3/sem_unlink.3:50 build/C/man3/sem_wait.3:114
152 #: build/C/man2/semctl.2:387 build/C/man2/semget.2:163
153 #: build/C/man2/semop.2:319
154 #, no-wrap
155 msgid "ERRORS"
156 msgstr "エラー"
157
158 #. type: TP
159 #: build/C/man3/sem_close.3:50 build/C/man3/sem_destroy.3:62
160 #: build/C/man3/sem_getvalue.3:61 build/C/man3/sem_init.3:84
161 #: build/C/man3/sem_open.3:132 build/C/man3/sem_open.3:137
162 #: build/C/man3/sem_post.3:53 build/C/man3/sem_wait.3:119
163 #: build/C/man3/sem_wait.3:133 build/C/man2/semctl.2:420
164 #: build/C/man2/semget.2:188 build/C/man2/semop.2:367
165 #, no-wrap
166 msgid "B<EINVAL>"
167 msgstr "B<EINVAL>"
168
169 #. type: Plain text
170 #: build/C/man3/sem_close.3:54 build/C/man3/sem_destroy.3:66
171 #: build/C/man3/sem_getvalue.3:65 build/C/man3/sem_post.3:57
172 #: build/C/man3/sem_wait.3:123
173 msgid "I<sem> is not a valid semaphore."
174 msgstr "I<sem> は有効なセマフォではない。"
175
176 #. type: SH
177 #: build/C/man3/sem_close.3:54 build/C/man3/sem_destroy.3:66
178 #: build/C/man3/sem_getvalue.3:65 build/C/man3/sem_init.3:95
179 #: build/C/man3/sem_open.3:170 build/C/man7/sem_overview.7:138
180 #: build/C/man3/sem_post.3:61 build/C/man3/sem_unlink.3:62
181 #: build/C/man3/sem_wait.3:143 build/C/man2/semctl.2:462
182 #: build/C/man2/semget.2:219 build/C/man2/semop.2:397
183 #, no-wrap
184 msgid "CONFORMING TO"
185 msgstr "準拠"
186
187 #. type: Plain text
188 #: build/C/man3/sem_close.3:56 build/C/man3/sem_destroy.3:68
189 #: build/C/man3/sem_getvalue.3:67 build/C/man3/sem_init.3:97
190 #: build/C/man3/sem_open.3:172 build/C/man7/sem_overview.7:140
191 #: build/C/man3/sem_post.3:63 build/C/man3/sem_unlink.3:64
192 #: build/C/man3/sem_wait.3:145
193 msgid "POSIX.1-2001."
194 msgstr "POSIX.1-2001."
195
196 #. type: SH
197 #: build/C/man3/sem_close.3:56 build/C/man3/sem_destroy.3:68
198 #: build/C/man3/sem_getvalue.3:67 build/C/man3/sem_init.3:97
199 #: build/C/man7/sem_overview.7:140 build/C/man3/sem_post.3:63
200 #: build/C/man3/sem_wait.3:145 build/C/man2/semctl.2:476
201 #: build/C/man2/semget.2:223 build/C/man2/semop.2:400
202 #, no-wrap
203 msgid "NOTES"
204 msgstr "注意"
205
206 #. type: Plain text
207 #: build/C/man3/sem_close.3:60
208 msgid ""
209 "All open named semaphores are automatically closed on process termination, "
210 "or upon B<execve>(2)."
211 msgstr ""
212 "オープンされたすべての名前付きセマフォは、プロセス終了時、もしくは B<execve>"
213 "(2)  実行時に自動的にクローズされる。"
214
215 #. type: SH
216 #: build/C/man3/sem_close.3:60 build/C/man3/sem_destroy.3:74
217 #: build/C/man3/sem_getvalue.3:71 build/C/man3/sem_init.3:102
218 #: build/C/man3/sem_open.3:172 build/C/man7/sem_overview.7:152
219 #: build/C/man3/sem_post.3:70 build/C/man3/sem_unlink.3:64
220 #: build/C/man3/sem_wait.3:262 build/C/man2/semctl.2:536
221 #: build/C/man2/semget.2:294 build/C/man2/semop.2:536
222 #, no-wrap
223 msgid "SEE ALSO"
224 msgstr "関連項目"
225
226 #. type: Plain text
227 #: build/C/man3/sem_close.3:67
228 msgid ""
229 "B<sem_getvalue>(3), B<sem_open>(3), B<sem_post>(3), B<sem_unlink>(3), "
230 "B<sem_wait>(3), B<sem_overview>(7)"
231 msgstr ""
232 "B<sem_getvalue>(3), B<sem_open>(3), B<sem_post>(3), B<sem_unlink>(3), "
233 "B<sem_wait>(3), B<sem_overview>(7)"
234
235 #. type: SH
236 #: build/C/man3/sem_close.3:67 build/C/man3/sem_destroy.3:79
237 #: build/C/man3/sem_getvalue.3:75 build/C/man3/sem_init.3:107
238 #: build/C/man3/sem_open.3:179 build/C/man7/sem_overview.7:162
239 #: build/C/man3/sem_post.3:74 build/C/man3/sem_unlink.3:70
240 #: build/C/man3/sem_wait.3:268 build/C/man2/semctl.2:543
241 #: build/C/man2/semget.2:301 build/C/man2/semop.2:545
242 #, no-wrap
243 msgid "COLOPHON"
244 msgstr "この文書について"
245
246 #. type: Plain text
247 #: build/C/man3/sem_close.3:74 build/C/man3/sem_destroy.3:86
248 #: build/C/man3/sem_getvalue.3:82 build/C/man3/sem_init.3:114
249 #: build/C/man3/sem_open.3:186 build/C/man7/sem_overview.7:169
250 #: build/C/man3/sem_post.3:81 build/C/man3/sem_unlink.3:77
251 #: build/C/man3/sem_wait.3:275 build/C/man2/semctl.2:550
252 #: build/C/man2/semget.2:308 build/C/man2/semop.2:552
253 #, fuzzy
254 #| msgid ""
255 #| "This page is part of release 3.53 of the Linux I<man-pages> project.  A "
256 #| "description of the project, and information about reporting bugs, can be "
257 #| "found at \\%http://www.kernel.org/doc/man-pages/."
258 msgid ""
259 "This page is part of release 3.54 of the Linux I<man-pages> project.  A "
260 "description of the project, and information about reporting bugs, can be "
261 "found at \\%http://www.kernel.org/doc/man-pages/."
262 msgstr ""
263 "この man ページは Linux I<man-pages> プロジェクトのリリース 3.53 の一部\n"
264 "である。プロジェクトの説明とバグ報告に関する情報は\n"
265 "http://www.kernel.org/doc/man-pages/ に書かれている。"
266
267 #. type: TH
268 #: build/C/man3/sem_destroy.3:26
269 #, no-wrap
270 msgid "SEM_DESTROY"
271 msgstr "SEM_DESTROY"
272
273 #. type: Plain text
274 #: build/C/man3/sem_destroy.3:29
275 msgid "sem_destroy - destroy an unnamed semaphore"
276 msgstr "sem_destroy - 名前なしセマフォを破棄する"
277
278 #. type: Plain text
279 #: build/C/man3/sem_destroy.3:34
280 #, no-wrap
281 msgid "B<int sem_destroy(sem_t *>I<sem>B<);>\n"
282 msgstr "B<int sem_destroy(sem_t *>I<sem>B<);>\n"
283
284 #. type: Plain text
285 #: build/C/man3/sem_destroy.3:41
286 msgid ""
287 "B<sem_destroy>()  destroys the unnamed semaphore at the address pointed to "
288 "by I<sem>."
289 msgstr ""
290 "B<sem_destroy>()  は I<sem> が指すアドレスにある名前なしセマフォを破棄する。"
291
292 #. type: Plain text
293 #: build/C/man3/sem_destroy.3:46
294 msgid ""
295 "Only a semaphore that has been initialized by B<sem_init>(3)  should be "
296 "destroyed using B<sem_destroy>()."
297 msgstr ""
298 "B<sem_destroy>()  を使って破棄するのは、 B<sem_init>(3)  で初期化したセマフォ"
299 "だけにすべきである。"
300
301 #. type: Plain text
302 #: build/C/man3/sem_destroy.3:51
303 msgid ""
304 "Destroying a semaphore that other processes or threads are currently blocked "
305 "on (in B<sem_wait>(3))  produces undefined behavior."
306 msgstr ""
307 "他のプロセスやスレッドが (B<sem_wait>(3)  で) 待ち状態になっているセマフォを"
308 "破棄した場合の挙動は定義されていない。"
309
310 #. type: Plain text
311 #: build/C/man3/sem_destroy.3:55
312 msgid ""
313 "Using a semaphore that has been destroyed produces undefined results, until "
314 "the semaphore has been reinitialized using B<sem_init>(3)."
315 msgstr ""
316 "すでに破棄されたセマフォを、 B<sem_init>(3)  を使って再初期化される前に使用し"
317 "た場合、その結果は未定義である。"
318
319 #. type: Plain text
320 #: build/C/man3/sem_destroy.3:61
321 msgid ""
322 "B<sem_destroy>()  returns 0 on success; on error, -1 is returned, and "
323 "I<errno> is set to indicate the error."
324 msgstr ""
325 "成功すると、 B<sem_destroy>()  は 0 を返す。エラーの場合、-1 を返し、 "
326 "I<errno> にエラーを示す値をセットする。"
327
328 #.  But not on NPTL, where sem_destroy () is a no-op..
329 #. type: Plain text
330 #: build/C/man3/sem_destroy.3:74
331 msgid ""
332 "An unnamed semaphore should be destroyed with B<sem_destroy>()  before the "
333 "memory in which it is located is deallocated.  Failure to do this can result "
334 "in resource leaks on some implementations."
335 msgstr ""
336 "名前なしセマフォは、そのセマフォが置かれているメモリが解放される前に、 "
337 "B<sem_destroy>()  を使って破棄しておくべきである。これを行わなかった場合、実"
338 "装によっては リソースのリークが起こりえる。"
339
340 #. type: Plain text
341 #: build/C/man3/sem_destroy.3:79
342 msgid "B<sem_init>(3), B<sem_post>(3), B<sem_wait>(3), B<sem_overview>(7)"
343 msgstr "B<sem_init>(3), B<sem_post>(3), B<sem_wait>(3), B<sem_overview>(7)"
344
345 #. type: TH
346 #: build/C/man3/sem_getvalue.3:26
347 #, no-wrap
348 msgid "SEM_GETVALUE"
349 msgstr "SEM_GETVALUE"
350
351 #. type: Plain text
352 #: build/C/man3/sem_getvalue.3:29
353 msgid "sem_getvalue - get the value of a semaphore"
354 msgstr "sem_getvalue - セマフォの値を取得する"
355
356 #. type: Plain text
357 #: build/C/man3/sem_getvalue.3:34
358 #, no-wrap
359 msgid "B<int sem_getvalue(sem_t *>I<sem>B<, int *>I<sval>B<);>\n"
360 msgstr "B<int sem_getvalue(sem_t *>I<sem>B<, int *>I<sval>B<);>\n"
361
362 #. type: Plain text
363 #: build/C/man3/sem_getvalue.3:43
364 msgid ""
365 "B<sem_getvalue>()  places the current value of the semaphore pointed to "
366 "I<sem> into the integer pointed to by I<sval>."
367 msgstr ""
368 "B<sem_getvalue>()  は、 I<sem> が指すセマフォの現在の値を I<sval> で指す整数"
369 "に格納する。"
370
371 #. type: Plain text
372 #: build/C/man3/sem_getvalue.3:54
373 msgid ""
374 "If one or more processes or threads are blocked waiting to lock the "
375 "semaphore with B<sem_wait>(3), POSIX.1-2001 permits two possibilities for "
376 "the value returned in I<sval>: either 0 is returned; or a negative number "
377 "whose absolute value is the count of the number of processes and threads "
378 "currently blocked in B<sem_wait>(3).  Linux adopts the former behavior."
379 msgstr ""
380 "POSIX.1-2001 によると、 1つ以上のプロセスかスレッドが B<sem_wait>(3)  でセマ"
381 "フォのロック待ちで停止している場合、 I<sval> で返される値は 0 もしくは負の値"
382 "のいずれかとなる。 負の値の場合、その絶対値は B<sem_wait>(3)  で現在停止して"
383 "いるプロセスかスレッドの合計数に等しい。 Linux は前者の動作 (0 を返す動作) を"
384 "採用している。"
385
386 #. type: Plain text
387 #: build/C/man3/sem_getvalue.3:60
388 msgid ""
389 "B<sem_getvalue>()  returns 0 on success; on error, -1 is returned and "
390 "I<errno> is set to indicate the error."
391 msgstr ""
392 "成功すると、 B<sem_getvalue>()  は 0 を返す。エラーの場合、-1 を返し、 "
393 "I<errno> にエラーを示す値をセットする。"
394
395 #. type: Plain text
396 #: build/C/man3/sem_getvalue.3:71
397 msgid ""
398 "The value of the semaphore may already have changed by the time "
399 "B<sem_getvalue>()  returns."
400 msgstr ""
401 "B<sem_getvalue>()  が返るときには、すでにセマフォの値は変化している可能性があ"
402 "る。"
403
404 #. type: Plain text
405 #: build/C/man3/sem_getvalue.3:75
406 msgid "B<sem_post>(3), B<sem_wait>(3), B<sem_overview>(7)"
407 msgstr "B<sem_post>(3), B<sem_wait>(3), B<sem_overview>(7)"
408
409 #. type: TH
410 #: build/C/man3/sem_init.3:26
411 #, no-wrap
412 msgid "SEM_INIT"
413 msgstr "SEM_INIT"
414
415 #. type: Plain text
416 #: build/C/man3/sem_init.3:29
417 msgid "sem_init - initialize an unnamed semaphore"
418 msgstr "sem_init - 名前なしセマフォを初期化する"
419
420 #. type: Plain text
421 #: build/C/man3/sem_init.3:34
422 #, no-wrap
423 msgid "B<int sem_init(sem_t *>I<sem>B<, int >I<pshared>B<, unsigned int >I<value>B<);>\n"
424 msgstr "B<int sem_init(sem_t *>I<sem>B<, int >I<pshared>B<, unsigned int >I<value>B<);>\n"
425
426 #. type: Plain text
427 #: build/C/man3/sem_init.3:44
428 msgid ""
429 "B<sem_init>()  initializes the unnamed semaphore at the address pointed to "
430 "by I<sem>.  The I<value> argument specifies the initial value for the "
431 "semaphore."
432 msgstr ""
433 "B<sem_init>()  は、 I<sem> が指すアドレスにある名前なしセマフォを初期化す"
434 "る。 I<value> 引き数はそのセマフォの初期値を指定する。"
435
436 #. type: Plain text
437 #: build/C/man3/sem_init.3:49
438 msgid ""
439 "The I<pshared> argument indicates whether this semaphore is to be shared "
440 "between the threads of a process, or between processes."
441 msgstr ""
442 "I<pshared> 引き数は、このセマフォがプロセス内のスレッド間で共有されるのか、 "
443 "プロセス間で共有されるのか、を示す。"
444
445 #. type: Plain text
446 #: build/C/man3/sem_init.3:57
447 msgid ""
448 "If I<pshared> has the value 0, then the semaphore is shared between the "
449 "threads of a process, and should be located at some address that is visible "
450 "to all threads (e.g., a global variable, or a variable allocated dynamically "
451 "on the heap)."
452 msgstr ""
453 "I<pshared> が 0 の場合、セマフォはプロセス内のスレッド間で共有される。 セマ"
454 "フォはすべてのスレッドから参照可能なアドレスに配置すべきである (例えば、大域"
455 "変数や、ヒープ上に動的に割り当てられた変数など)。"
456
457 #. type: Plain text
458 #: build/C/man3/sem_init.3:74
459 msgid ""
460 "If I<pshared> is nonzero, then the semaphore is shared between processes, "
461 "and should be located in a region of shared memory (see B<shm_open>(3), "
462 "B<mmap>(2), and B<shmget>(2)).  (Since a child created by B<fork>(2)  "
463 "inherits its parent's memory mappings, it can also access the semaphore.)  "
464 "Any process that can access the shared memory region can operate on the "
465 "semaphore using B<sem_post>(3), B<sem_wait>(3), etc."
466 msgstr ""
467 "I<pshared> が 0 以外の場合、セマフォはプロセス間で共有される。セマフォは 共有"
468 "メモリ領域に配置すべきである (B<shm_open>(3), B<mmap>(2), B<shmget>(2)  参"
469 "照)。 (B<fork>(2)  で生成された子プロセスは親プロセスのメモリマッピングを継承"
470 "するため、 子プロセスもセマフォにアクセスできる。)  共有メモリ領域にアクセス"
471 "できるプロセスならば、どのプロセスでも B<sem_post>(3)  や B<sem_wait>(3)  な"
472 "どを使ってセマフォを操作できる。"
473
474 #. type: Plain text
475 #: build/C/man3/sem_init.3:77
476 msgid ""
477 "Initializing a semaphore that has already been initialized results in "
478 "undefined behavior."
479 msgstr "すでに初期化済のセマフォを初期化した場合の挙動は定義されていない。"
480
481 #. type: Plain text
482 #: build/C/man3/sem_init.3:83
483 msgid ""
484 "B<sem_init>()  returns 0 on success; on error, -1 is returned, and I<errno> "
485 "is set to indicate the error."
486 msgstr ""
487 "成功すると、 B<sem_init>()  は 0 を返す。エラーの場合、-1 を返し、 I<errno> "
488 "にエラーを示す値をセットする。"
489
490 #. type: Plain text
491 #: build/C/man3/sem_init.3:89
492 msgid "I<value> exceeds B<SEM_VALUE_MAX>."
493 msgstr "I<value> が B<SEM_VALUE_MAX> を超えている。"
494
495 #. type: TP
496 #: build/C/man3/sem_init.3:89
497 #, no-wrap
498 msgid "B<ENOSYS>"
499 msgstr "B<ENOSYS>"
500
501 #. type: Plain text
502 #: build/C/man3/sem_init.3:95
503 msgid ""
504 "I<pshared> is nonzero, but the system does not support process-shared "
505 "semaphores (see B<sem_overview>(7))."
506 msgstr ""
507 "I<pshared> が 0 以外だが、システムがプロセス共有セマフォをサポートしていない "
508 "(B<sem_overview>(7)  参照)。"
509
510 #. type: Plain text
511 #: build/C/man3/sem_init.3:102
512 msgid ""
513 "Bizarrely, POSIX.1-2001 does not specify the value that should be returned "
514 "by a successful call to B<sem_init>().  POSIX.1-2008 rectifies this, "
515 "specifying the zero return on success."
516 msgstr ""
517 "妙なことに、POSIX.1-2001 は B<sem_init>()  が成功した場合に返すべき値を規定し"
518 "ていない。 POSIX.1-2008 ではこれが修正され、成功時には 0 を返すことが規定され"
519 "た。"
520
521 #. type: Plain text
522 #: build/C/man3/sem_init.3:107
523 msgid "B<sem_destroy>(3), B<sem_post>(3), B<sem_wait>(3), B<sem_overview>(7)"
524 msgstr "B<sem_destroy>(3), B<sem_post>(3), B<sem_wait>(3), B<sem_overview>(7)"
525
526 #. type: TH
527 #: build/C/man3/sem_open.3:26
528 #, no-wrap
529 msgid "SEM_OPEN"
530 msgstr "SEM_OPEN"
531
532 #. type: Plain text
533 #: build/C/man3/sem_open.3:29
534 msgid "sem_open - initialize and open a named semaphore"
535 msgstr "sem_open - 名前付きセマフォを初期化し、オープンする"
536
537 #. type: Plain text
538 #: build/C/man3/sem_open.3:34
539 #, no-wrap
540 msgid ""
541 "B<#include E<lt>fcntl.hE<gt>>           /* For O_* constants */\n"
542 "B<#include E<lt>sys/stat.hE<gt>>        /* For mode constants */\n"
543 "B<#include E<lt>semaphore.hE<gt>>\n"
544 msgstr ""
545 "B<#include E<lt>fcntl.hE<gt>>           /* For O_* constants */\n"
546 "B<#include E<lt>sys/stat.hE<gt>>        /* For mode constants */\n"
547 "B<#include E<lt>semaphore.hE<gt>>\n"
548
549 #. type: Plain text
550 #: build/C/man3/sem_open.3:38
551 #, no-wrap
552 msgid ""
553 "B<sem_t *sem_open(const char *>I<name>B<, int >I<oflag>B<);>\n"
554 "B<sem_t *sem_open(const char *>I<name>B<, int >I<oflag>B<, >\n"
555 "B<                mode_t >I<mode>B<, unsigned int >I<value>B<);>\n"
556 msgstr ""
557 "B<sem_t *sem_open(const char *>I<name>B<, int >I<oflag>B<);>\n"
558 "B<sem_t *sem_open(const char *>I<name>B<, int >I<oflag>B<, >\n"
559 "B<                mode_t >I<mode>B<, unsigned int >I<value>B<);>\n"
560
561 #. type: Plain text
562 #: build/C/man3/sem_open.3:50
563 msgid ""
564 "B<sem_open>()  creates a new POSIX semaphore or opens an existing "
565 "semaphore.  The semaphore is identified by I<name>.  For details of the "
566 "construction of I<name>, see B<sem_overview>(7)."
567 msgstr ""
568 "B<sem_open>()  は、新規の POSIX セマフォを作成するか、既存のセマフォのオープ"
569 "ンを行う。 セマフォは I<name> で識別される。 I<name> の構成の詳細は "
570 "B<sem_overview>(7)  を参照。"
571
572 #.  In reality the filesystem IDs are used on Linux.
573 #. type: Plain text
574 #: build/C/man3/sem_open.3:76
575 msgid ""
576 "The I<oflag> argument specifies flags that control the operation of the "
577 "call.  (Definitions of the flags values can be obtained by including "
578 "I<E<lt>fcntl.hE<gt>>.)  If B<O_CREAT> is specified in I<oflag>, then the "
579 "semaphore is created if it does not already exist.  The owner (user ID) of "
580 "the semaphore is set to the effective user ID of the calling process.  The "
581 "group ownership (group ID) is set to the effective group ID of the calling "
582 "process.  If both B<O_CREAT> and B<O_EXCL> are specified in I<oflag>, then "
583 "an error is returned if a semaphore with the given I<name> already exists."
584 msgstr ""
585 "I<oflag> 引き数には、 B<sem_open>()  の動作を制御するフラグを指定する (oflag "
586 "の値の定義は I<E<lt>fcntl.hE<gt>> のインクルードにより得られる)。 I<oflag> "
587 "に B<O_CREAT> が指定されると、まだ存在しない場合にはそのセマフォが作成され"
588 "る。 セマフォの所有者 (ユーザ ID)、グループ所有権 (グループ ID) には、 それぞ"
589 "れ呼び出し元プロセスの実効 UID、実効 GID が設定される。 I<oflag> に "
590 "B<O_CREAT> と B<O_EXCL> の両方が指定された場合、指定された名前 I<name> のセマ"
591 "フォがすでに存在するとエラーが返される。"
592
593 #. type: Plain text
594 #: build/C/man3/sem_open.3:104
595 msgid ""
596 "If B<O_CREAT> is specified in I<oflag>, then two additional arguments must "
597 "be supplied.  The I<mode> argument specifies the permissions to be placed on "
598 "the new semaphore, as for B<open>(2).  (Symbolic definitions for the "
599 "permissions bits can be obtained by including I<E<lt>sys/stat.hE<gt>>.)  The "
600 "permissions settings are masked against the process umask.  Both read and "
601 "write permission should be granted to each class of user that will access "
602 "the semaphore.  The I<value> argument specifies the initial value for the "
603 "new semaphore.  If B<O_CREAT> is specified, and a semaphore with the given "
604 "I<name> already exists, then I<mode> and I<value> are ignored."
605 msgstr ""
606 "I<oflag> に B<O_CREAT> を指定する場合、さらに引き数が 2 つ必要である。 "
607 "I<mode> 引き数は、 B<open>(2)  と同じように、新しいセマフォに設定されるアクセ"
608 "ス許可 (permission) を 指定する。許可設定はプロセスの umask でマスクされる "
609 "(許可ビットのシンボル定義は I<E<lt>sys/stat.hE<gt>> のインクルードにより得ら"
610 "れる)。 セマフォにアクセスしようとするユーザは、読み出し許可と書き込み許可の "
611 "両方を得る必要がある。 I<value> 引き数は新しいセマフォの初期値を指定する。 "
612 "B<O_CREAT> が指定され、指定した名前 I<name> のセマフォがすでに存在する場合、 "
613 "I<mode> と I<value> は無視される。"
614
615 #. type: Plain text
616 #: build/C/man3/sem_open.3:116
617 msgid ""
618 "On success, B<sem_open>()  returns the address of the new semaphore; this "
619 "address is used when calling other semaphore-related functions.  On error, "
620 "B<sem_open>()  returns B<SEM_FAILED>, with I<errno> set to indicate the "
621 "error."
622 msgstr ""
623 "成功すると、 B<sem_open>()  は新しいセマフォのアドレスを返す。 このアドレスは"
624 "他のセマフォ関連の関数を呼び出す際に使用される。 エラーの場合、 B<sem_open>"
625 "()  は B<SEM_FAILED> を返し、 I<errno> にエラーを示す値をセットする。"
626
627 #. type: TP
628 #: build/C/man3/sem_open.3:117 build/C/man3/sem_unlink.3:51
629 #: build/C/man2/semctl.2:391 build/C/man2/semget.2:167
630 #: build/C/man2/semop.2:331
631 #, no-wrap
632 msgid "B<EACCES>"
633 msgstr "B<EACCES>"
634
635 #. type: Plain text
636 #: build/C/man3/sem_open.3:121
637 msgid ""
638 "The semaphore exists, but the caller does not have permission to open it."
639 msgstr ""
640 "そのセマフォが存在するが、呼び出し元にはそのセマフォをオープンする 許可がな"
641 "い。"
642
643 #. type: TP
644 #: build/C/man3/sem_open.3:121 build/C/man2/semget.2:175
645 #, no-wrap
646 msgid "B<EEXIST>"
647 msgstr "B<EEXIST>"
648
649 #. type: Plain text
650 #: build/C/man3/sem_open.3:132
651 msgid ""
652 "Both B<O_CREAT> and B<O_EXCL> were specified in I<oflag>, but a semaphore "
653 "with this I<name> already exists."
654 msgstr ""
655 "I<oflag> に B<O_CREAT> と B<O_EXCL> の両方が指定されたが、 I<name> という名前"
656 "のセマフォはすでに存在する。"
657
658 #. type: Plain text
659 #: build/C/man3/sem_open.3:137
660 msgid "I<value> was greater than B<SEM_VALUE_MAX>."
661 msgstr "I<value> が B<SEM_VALUE_MAX> よりも大きい。"
662
663 #. type: Plain text
664 #: build/C/man3/sem_open.3:141
665 msgid "I<name> consists of just \"/\", followed by no other characters."
666 msgstr ""
667 "I<name> が \"/\" だけで構成され、その後ろに他の文字が続いていなかった。"
668
669 #. type: TP
670 #: build/C/man3/sem_open.3:141
671 #, no-wrap
672 msgid "B<EMFILE>"
673 msgstr "B<EMFILE>"
674
675 #. type: Plain text
676 #: build/C/man3/sem_open.3:144
677 msgid "The process already has the maximum number of files and open."
678 msgstr "オープンされたファイル数がすでにそのプロセスにおける上限に達している。"
679
680 #. type: TP
681 #: build/C/man3/sem_open.3:144 build/C/man3/sem_unlink.3:54
682 #, no-wrap
683 msgid "B<ENAMETOOLONG>"
684 msgstr "B<ENAMETOOLONG>"
685
686 #. type: Plain text
687 #: build/C/man3/sem_open.3:148 build/C/man3/sem_unlink.3:58
688 msgid "I<name> was too long."
689 msgstr "I<name> が長すぎる。"
690
691 #. type: TP
692 #: build/C/man3/sem_open.3:148
693 #, no-wrap
694 msgid "B<ENFILE>"
695 msgstr "B<ENFILE>"
696
697 #. type: Plain text
698 #: build/C/man3/sem_open.3:151
699 msgid "The system limit on the total number of open files has been reached."
700 msgstr "オープンされたファイル総数がシステム全体での上限に達している。"
701
702 #. type: TP
703 #: build/C/man3/sem_open.3:151 build/C/man3/sem_unlink.3:58
704 #: build/C/man2/semget.2:199
705 #, no-wrap
706 msgid "B<ENOENT>"
707 msgstr "B<ENOENT>"
708
709 #.  this error can occur if we have a name of the (nonportable) form
710 #.  /dir/name, and the directory /dev/shm/dir does not exist.
711 #. type: Plain text
712 #: build/C/man3/sem_open.3:167
713 msgid ""
714 "The B<O_CREAT> flag was not specified in I<oflag> and no semaphore with this "
715 "I<name> exists; or, B<O_CREAT> was specified, but I<name> wasn't well formed."
716 msgstr ""
717 "I<oflag> に B<O_CREAT> フラグが指定されておらず、 I<name> という名前のセマ"
718 "フォも存在しない。 または、 B<O_CREAT> が指定されたが、 I<name> が適切な形式"
719 "ではなかった。"
720
721 #. type: TP
722 #: build/C/man3/sem_open.3:167 build/C/man2/semget.2:207
723 #: build/C/man2/semop.2:374
724 #, no-wrap
725 msgid "B<ENOMEM>"
726 msgstr "B<ENOMEM>"
727
728 #. type: Plain text
729 #: build/C/man3/sem_open.3:170
730 msgid "Insufficient memory."
731 msgstr "十分なメモリがない。"
732
733 #. type: Plain text
734 #: build/C/man3/sem_open.3:179
735 msgid ""
736 "B<sem_close>(3), B<sem_getvalue>(3), B<sem_post>(3), B<sem_unlink>(3), "
737 "B<sem_wait>(3), B<sem_overview>(7)"
738 msgstr ""
739 "B<sem_close>(3), B<sem_getvalue>(3), B<sem_post>(3), B<sem_unlink>(3), "
740 "B<sem_wait>(3), B<sem_overview>(7)"
741
742 #. type: TH
743 #: build/C/man7/sem_overview.7:26
744 #, no-wrap
745 msgid "SEM_OVERVIEW"
746 msgstr "SEM_OVERVIEW"
747
748 #. type: Plain text
749 #: build/C/man7/sem_overview.7:29
750 msgid "sem_overview - overview of POSIX semaphores"
751 msgstr "sem_overview - POSIX セマフォの概要"
752
753 #. type: Plain text
754 #: build/C/man7/sem_overview.7:31
755 msgid ""
756 "POSIX semaphores allow processes and threads to synchronize their actions."
757 msgstr ""
758 "POSIX セマフォを使用すると、プロセスやスレッド間でその動作を 同期させることが"
759 "できる。"
760
761 #. type: Plain text
762 #: build/C/man7/sem_overview.7:41
763 msgid ""
764 "A semaphore is an integer whose value is never allowed to fall below zero.  "
765 "Two operations can be performed on semaphores: increment the semaphore value "
766 "by one (B<sem_post>(3)); and decrement the semaphore value by one "
767 "(B<sem_wait>(3)).  If the value of a semaphore is currently zero, then a "
768 "B<sem_wait>(3)  operation will block until the value becomes greater than "
769 "zero."
770 msgstr ""
771 "セマフォは整数であり、その値は決して 0 未満になることは許されない。 セマフォ"
772 "に対してできる操作は 2 つである: セマフォ値を 1 増やす (B<sem_post>(3)); セマ"
773 "フォ値を 1 減らす (B<sem_wait>(3))。 セマフォの値がすでに 0 の場合、セマフォ"
774 "値が 0 より大きくなるまで B<sem_wait>(3)  操作は停止 (block) する。"
775
776 #. type: Plain text
777 #: build/C/man7/sem_overview.7:44
778 msgid ""
779 "POSIX semaphores come in two forms: named semaphores and unnamed semaphores."
780 msgstr ""
781 "POSIX セマフォには、名前付きセマフォ (named semaphore) と 名前なしセマフォ "
782 "(unnamed semaphore) の 2つの形がある。"
783
784 #. type: TP
785 #: build/C/man7/sem_overview.7:44
786 #, no-wrap
787 msgid "B<Named semaphores>"
788 msgstr "B<名前付きセマフォ>"
789
790 #.  glibc allows the initial slash to be omitted, and makes
791 #.  multiple initial slashes equivalent to a single slash.
792 #.  This differs from the implementation of POSIX message queues.
793 #.  glibc allows subdirectory components in the name, in which
794 #.  case the subdirectory tree must exist under /dev/shm, and
795 #.  the fist subdirectory component must exist as the name
796 #.  sem.name, and all of the subdirectory components must allow the
797 #.  required permissions if a user wants to create a semaphore
798 #.  object in a subdirectory.
799 #. type: Plain text
800 #: build/C/man7/sem_overview.7:64
801 msgid ""
802 "A named semaphore is identified by a name of the form I</somename>; that is, "
803 "a null-terminated string of up to B<NAME_MAX>I<-4> (i.e., 251) characters "
804 "consisting of an initial slash, followed by one or more characters, none of "
805 "which are slashes.  Two processes can operate on the same named semaphore by "
806 "passing the same name to B<sem_open>(3)."
807 msgstr ""
808 "名前付きセマフォは I</somename> という形式の名前で識別される。 その名前は、最"
809 "大で B<NAME_MAX>I<-4> (すなわち 251) 文字の NULL 終端された文字列で、 スラッ"
810 "シュで始まり、スラッシュ以外の文字が 1 文字以上続く形式である。 B<sem_open>"
811 "(3)  に同じ名前を渡すことにより、2 つのプロセス間で同じ名前のセマフォ に対し"
812 "操作を行うことができる。"
813
814 #. type: Plain text
815 #: build/C/man7/sem_overview.7:79
816 msgid ""
817 "The B<sem_open>(3)  function creates a new named semaphore or opens an "
818 "existing named semaphore.  After the semaphore has been opened, it can be "
819 "operated on using B<sem_post>(3)  and B<sem_wait>(3).  When a process has "
820 "finished using the semaphore, it can use B<sem_close>(3)  to close the "
821 "semaphore.  When all processes have finished using the semaphore, it can be "
822 "removed from the system using B<sem_unlink>(3)."
823 msgstr ""
824 "B<sem_open>(3)  関数は、新しい名前付きセマフォを作成するか、既に存在する名前"
825 "付き セマフォをオープンする。 セマフォをオープンした後は、 B<sem_post>(3)  "
826 "と B<sem_wait>(3)  を使ってセマフォを操作できる。 プロセスがセマフォの使用を"
827 "終えた際は、 B<sem_close>(3)  を使ってセマフォをクローズできる。 あるセマフォ"
828 "をどのプロセスも使用しなくなると、 B<sem_unlink>(3)  を使ってそのセマフォをシ"
829 "ステムから削除することができる。"
830
831 #. type: TP
832 #: build/C/man7/sem_overview.7:79
833 #, no-wrap
834 msgid "B<Unnamed semaphores (memory-based semaphores)>"
835 msgstr "B<名前なしセマフォ (メモリベース・セマフォ)>"
836
837 #. type: Plain text
838 #: build/C/man7/sem_overview.7:94
839 msgid ""
840 "An unnamed semaphore does not have a name.  Instead the semaphore is placed "
841 "in a region of memory that is shared between multiple threads (a I<thread-"
842 "shared semaphore>)  or processes (a I<process-shared semaphore>).  A thread-"
843 "shared semaphore is placed in an area of memory shared between the threads "
844 "of a process, for example, a global variable.  A process-shared semaphore "
845 "must be placed in a shared memory region (e.g., a System V shared memory "
846 "segment created using B<shmget>(2), or a POSIX shared memory object built "
847 "created using B<shm_open>(3))."
848 msgstr ""
849 "名前なしセマフォは名前を持たない。その代わり、セマフォは、 複数スレッド間で共"
850 "有されるメモリ領域、もしくは複数プロセス間で 共有されたメモリ領域に置かれる "
851 "(前者を I<スレッド共有セマフォ (thread-shared semaphore)>、 後者を I<プロセス"
852 "共有セマフォ (process-shared semaphore)> と呼ぶ)。スレッド共有セマフォは、同"
853 "じプロセス内のスレッド間で共有される メモリ領域、例えば大域変数 (global "
854 "variable) に配置される。 プロセス共有セマフォは、共有メモリ領域 (例えば、 "
855 "B<shmget>(2)  を使って作成できる System V 共有メモリ・セグメントや "
856 "B<shm_open>(3)  を使って作成できる POSIX 共有メモリ・オブジェクト)  内に配置"
857 "しなければならない。"
858
859 #. type: Plain text
860 #: build/C/man7/sem_overview.7:105
861 msgid ""
862 "Before being used, an unnamed semaphore must be initialized using B<sem_init>"
863 "(3).  It can then be operated on using B<sem_post>(3)  and B<sem_wait>(3).  "
864 "When the semaphore is no longer required, and before the memory in which it "
865 "is located is deallocated, the semaphore should be destroyed using "
866 "B<sem_destroy>(3)."
867 msgstr ""
868 "名前なしセマフォは、使用する前に B<sem_init>(3)  を使って初期化しなければなら"
869 "ない。 セマフォは B<sem_post>(3)  と B<sem_wait>(3)  を使って操作できる。 セ"
870 "マフォがもはや必要なくなったときや、 セマフォが置かれているメモリを解放する前"
871 "には、 B<sem_destroy>(3)  を使ってセマフォを破棄すべきである。"
872
873 #. type: Plain text
874 #: build/C/man7/sem_overview.7:108
875 msgid ""
876 "The remainder of this section describes some specific details of the Linux "
877 "implementation of POSIX semaphores."
878 msgstr ""
879 "この節の残りでは、POSIX セマフォの Linux の実装の詳細 について説明する。"
880
881 #. type: SS
882 #: build/C/man7/sem_overview.7:108
883 #, no-wrap
884 msgid "Versions"
885 msgstr "Versions"
886
887 #. type: Plain text
888 #: build/C/man7/sem_overview.7:114
889 msgid ""
890 "Prior to kernel 2.6, Linux supported only unnamed, thread-shared "
891 "semaphores.  On a system with Linux 2.6 and a glibc that provides the NPTL "
892 "threading implementation, a complete implementation of POSIX semaphores is "
893 "provided."
894 msgstr ""
895 "バージョン 2.6 より前のカーネルでは、Linux は 名前なしのスレッド共有セマフォ"
896 "のみをサポートしていた。 Linux 2.6 と NPTL スレッド実装を提供している glibc "
897 "が入った システムでは、POSIX セマフォの完全な実装が提供される。"
898
899 #. type: SS
900 #: build/C/man7/sem_overview.7:114
901 #, no-wrap
902 msgid "Persistence"
903 msgstr "持続性"
904
905 #. type: Plain text
906 #: build/C/man7/sem_overview.7:119
907 msgid ""
908 "POSIX named semaphores have kernel persistence: if not removed by "
909 "B<sem_unlink>(3), a semaphore will exist until the system is shut down."
910 msgstr ""
911 "POSIX 名前付きセマフォはカーネル内で保持される。 B<sem_unlink>(3)  で削除され"
912 "なければ、セマフォは システムがシャットダウンされるまで存在し続ける。"
913
914 #. type: SS
915 #: build/C/man7/sem_overview.7:119
916 #, no-wrap
917 msgid "Linking"
918 msgstr "リンク"
919
920 #. type: Plain text
921 #: build/C/man7/sem_overview.7:124
922 msgid ""
923 "Programs using the POSIX semaphores API must be compiled with I<cc -pthread> "
924 "to link against the real-time library, I<librt>."
925 msgstr ""
926 "POSIX セマフォ API を使用したプログラムは I<cc -pthread> でコンパイルし、リア"
927 "ルタイムライブラリ I<librt> とリンクしなければならない。"
928
929 #. type: SS
930 #: build/C/man7/sem_overview.7:124
931 #, fuzzy, no-wrap
932 #| msgid "Accessing named semaphores via the file system"
933 msgid "Accessing named semaphores via the filesystem"
934 msgstr "ファイルシステム経由での名前付きセマフォへのアクセス"
935
936 #. type: Plain text
937 #: build/C/man7/sem_overview.7:135
938 #, fuzzy
939 #| msgid ""
940 #| "On Linux, named semaphores are created in a virtual file system, normally "
941 #| "mounted under I</dev/shm>, with names of the form B<sem.>I<somename>.  "
942 #| "(This is the reason that semaphore names are limited to B<NAME_MAX>I<-4> "
943 #| "rather than B<NAME_MAX> characters.)"
944 msgid ""
945 "On Linux, named semaphores are created in a virtual filesystem, normally "
946 "mounted under I</dev/shm>, with names of the form B<sem.>I<somename>.  (This "
947 "is the reason that semaphore names are limited to B<NAME_MAX>I<-4> rather "
948 "than B<NAME_MAX> characters.)"
949 msgstr ""
950 "Linux では、名前付きセマフォは仮想ファイルシステム (virtual file system) 内"
951 "に B<sem.>I<somename> という形の名前で作成される。仮想ファイルシステムは通常 "
952 "I</dev/shm> 以下にマウントされる。 (これが、セマフォの名前の文字数の上限が "
953 "B<NAME_MAX> ではなく B<NAME_MAX>I<-4> となっている理由である。)"
954
955 #. type: Plain text
956 #: build/C/man7/sem_overview.7:138
957 msgid ""
958 "Since Linux 2.6.19, ACLs can be placed on files under this directory, to "
959 "control object permissions on a per-user and per-group basis."
960 msgstr ""
961 "Linux 2.6.19 以降では、このディレクトリ配下のファイルに対して ACL を 設定で"
962 "き、オブジェクトへの許可をユーザ単位、グループ単位で制御することが できる。"
963
964 #. type: Plain text
965 #: build/C/man7/sem_overview.7:149
966 msgid ""
967 "System V semaphores (B<semget>(2), B<semop>(2), etc.) are an older semaphore "
968 "API.  POSIX semaphores provide a simpler, and better designed interface than "
969 "System V semaphores; on the other hand POSIX semaphores are less widely "
970 "available (especially on older systems) than System V semaphores."
971 msgstr ""
972 "System V セマフォ (B<semget>(2), B<semop>(2)  など) は古いセマフォ API であ"
973 "る。 POSIX セマフォは System V よりも 簡単で、うまく設計されたインタフェース"
974 "を提供している。 一方で、POSIX セマフォは System V セマフォと比べると 利用で"
975 "きるシステムが少ない (特に、古いシステムでは少ない)。"
976
977 #. type: SH
978 #: build/C/man7/sem_overview.7:149 build/C/man3/sem_post.3:67
979 #: build/C/man3/sem_wait.3:153 build/C/man2/semop.2:511
980 #, no-wrap
981 msgid "EXAMPLE"
982 msgstr "例"
983
984 #. type: Plain text
985 #: build/C/man7/sem_overview.7:152
986 msgid ""
987 "An example of the use of various POSIX semaphore functions is shown in "
988 "B<sem_wait>(3)."
989 msgstr ""
990 "各種の POSIX セマフォ関数を使用した例が B<sem_wait>(3)  に記載されている。"
991
992 #. type: Plain text
993 #: build/C/man7/sem_overview.7:162
994 msgid ""
995 "B<sem_close>(3), B<sem_destroy>(3), B<sem_getvalue>(3), B<sem_init>(3), "
996 "B<sem_open>(3), B<sem_post>(3), B<sem_unlink>(3), B<sem_wait>(3), B<pthreads>"
997 "(7)"
998 msgstr ""
999 "B<sem_close>(3), B<sem_destroy>(3), B<sem_getvalue>(3), B<sem_init>(3), "
1000 "B<sem_open>(3), B<sem_post>(3), B<sem_unlink>(3), B<sem_wait>(3), B<pthreads>"
1001 "(7)"
1002
1003 #. type: TH
1004 #: build/C/man3/sem_post.3:26
1005 #, no-wrap
1006 msgid "SEM_POST"
1007 msgstr "SEM_POST"
1008
1009 #. type: Plain text
1010 #: build/C/man3/sem_post.3:29
1011 msgid "sem_post - unlock a semaphore"
1012 msgstr "sem_post - セマフォのロックを解除する"
1013
1014 #. type: Plain text
1015 #: build/C/man3/sem_post.3:34
1016 #, no-wrap
1017 msgid "B<int sem_post(sem_t *>I<sem>B<);>\n"
1018 msgstr "B<int sem_post(sem_t *>I<sem>B<);>\n"
1019
1020 #. type: Plain text
1021 #: build/C/man3/sem_post.3:45
1022 msgid ""
1023 "B<sem_post>()  increments (unlocks) the semaphore pointed to by I<sem>.  If "
1024 "the semaphore's value consequently becomes greater than zero, then another "
1025 "process or thread blocked in a B<sem_wait>(3)  call will be woken up and "
1026 "proceed to lock the semaphore."
1027 msgstr ""
1028 "B<sem_post>()  は、 I<sem> が指すセマフォの値を 1 増やす (ロックを解除する)。"
1029 "その結果、 セマフォの値は 0 より大きな値に変化し、 B<sem_wait>(3)  で停止して"
1030 "いる別のプロセスやスレッドが呼び起こされ、 セマフォをロックできるようになる。"
1031
1032 #. type: Plain text
1033 #: build/C/man3/sem_post.3:52
1034 msgid ""
1035 "B<sem_post>()  returns 0 on success; on error, the value of the semaphore is "
1036 "left unchanged, -1 is returned, and I<errno> is set to indicate the error."
1037 msgstr ""
1038 "成功すると、 B<sem_post>()  は 0 を返す。エラーの場合、セマフォの値は変更せず"
1039 "に、 -1 を返し、 I<errno> にエラーを示す値をセットする。"
1040
1041 #. type: TP
1042 #: build/C/man3/sem_post.3:57
1043 #, no-wrap
1044 msgid "B<EOVERFLOW>"
1045 msgstr "B<EOVERFLOW>"
1046
1047 #.  Added in POSIX.1-2008 TC1 (Austin Interpretation 213)
1048 #. type: Plain text
1049 #: build/C/man3/sem_post.3:61
1050 msgid "The maximum allowable value for a semaphore would be exceeded."
1051 msgstr "一つのセマフォで使用できる最大値を超えてしまうところであった。"
1052
1053 #. type: Plain text
1054 #: build/C/man3/sem_post.3:67
1055 msgid ""
1056 "B<sem_post>()  is async-signal-safe: it may be safely called within a signal "
1057 "handler."
1058 msgstr ""
1059 "B<sem_post>()  は async-signal-safe である。 つまり、シグナルハンドラの中でも"
1060 "安全に呼び出すことができる。"
1061
1062 #. type: Plain text
1063 #: build/C/man3/sem_post.3:70
1064 msgid "See B<sem_wait>(3)."
1065 msgstr "B<sem_wait>(3)  参照。"
1066
1067 #. type: Plain text
1068 #: build/C/man3/sem_post.3:74
1069 msgid "B<sem_getvalue>(3), B<sem_wait>(3), B<sem_overview>(7)"
1070 msgstr "B<sem_getvalue>(3), B<sem_wait>(3), B<sem_overview>(7)"
1071
1072 #. type: TH
1073 #: build/C/man3/sem_unlink.3:26
1074 #, no-wrap
1075 msgid "SEM_UNLINK"
1076 msgstr "SEM_UNLINK"
1077
1078 #. type: Plain text
1079 #: build/C/man3/sem_unlink.3:29
1080 msgid "sem_unlink - remove a named semaphore"
1081 msgstr "sem_unlink - 名前付きセマフォを削除する"
1082
1083 #. type: Plain text
1084 #: build/C/man3/sem_unlink.3:34
1085 #, no-wrap
1086 msgid "B<int sem_unlink(const char *>I<name>B<);>\n"
1087 msgstr "B<int sem_unlink(const char *>I<name>B<);>\n"
1088
1089 #. type: Plain text
1090 #: build/C/man3/sem_unlink.3:44
1091 msgid ""
1092 "B<sem_unlink>()  removes the named semaphore referred to by I<name>.  The "
1093 "semaphore name is removed immediately.  The semaphore is destroyed once all "
1094 "other processes that have the semaphore open close it."
1095 msgstr ""
1096 "B<sem_unlink>()  は、 I<name> で参照される名前付きセマフォを削除する。 セマ"
1097 "フォの名前は直ちに削除される。 このセマフォをオープンしている他のすべてのプロ"
1098 "セスがセマフォを 閉じて初めてセマフォの削除が行われる。"
1099
1100 #. type: Plain text
1101 #: build/C/man3/sem_unlink.3:50
1102 msgid ""
1103 "On success B<sem_unlink>()  returns 0; on error, -1 is returned, with "
1104 "I<errno> set to indicate the error."
1105 msgstr ""
1106 "成功すると、 B<sem_unlink>()  は 0 を返す。エラーの場合、-1 を返し、 "
1107 "I<errno> にエラーを示す値をセットする。"
1108
1109 #. type: Plain text
1110 #: build/C/man3/sem_unlink.3:54
1111 msgid "The caller does not have permission to unlink this semaphore."
1112 msgstr "呼び出し元にはこのセマフォを削除する許可がない。"
1113
1114 #. type: Plain text
1115 #: build/C/man3/sem_unlink.3:62
1116 msgid "There is no semaphore with the given I<name>."
1117 msgstr "指定された名前 I<name> のセマフォが存在しない。"
1118
1119 #. type: Plain text
1120 #: build/C/man3/sem_unlink.3:70
1121 msgid ""
1122 "B<sem_getvalue>(3), B<sem_open>(3), B<sem_post>(3), B<sem_wait>(3), "
1123 "B<sem_overview>(7)"
1124 msgstr ""
1125 "B<sem_getvalue>(3), B<sem_open>(3), B<sem_post>(3), B<sem_wait>(3), "
1126 "B<sem_overview>(7)"
1127
1128 #. type: TH
1129 #: build/C/man3/sem_wait.3:26
1130 #, no-wrap
1131 msgid "SEM_WAIT"
1132 msgstr "SEM_WAIT"
1133
1134 #. type: Plain text
1135 #: build/C/man3/sem_wait.3:29
1136 msgid "sem_wait, sem_timedwait, sem_trywait - lock a semaphore"
1137 msgstr "sem_wait, sem_timedwait, sem_trywait - セマフォをロックする"
1138
1139 #. type: Plain text
1140 #: build/C/man3/sem_wait.3:34
1141 #, no-wrap
1142 msgid "B<int sem_wait(sem_t *>I<sem>B<);>\n"
1143 msgstr "B<int sem_wait(sem_t *>I<sem>B<);>\n"
1144
1145 #. type: Plain text
1146 #: build/C/man3/sem_wait.3:36
1147 #, no-wrap
1148 msgid "B<int sem_trywait(sem_t *>I<sem>B<);>\n"
1149 msgstr "B<int sem_trywait(sem_t *>I<sem>B<);>\n"
1150
1151 #. type: Plain text
1152 #: build/C/man3/sem_wait.3:38
1153 #, no-wrap
1154 msgid "B<int sem_timedwait(sem_t *>I<sem>B<, const struct timespec *>I<abs_timeout>B<);>\n"
1155 msgstr "B<int sem_timedwait(sem_t *>I<sem>B<, const struct timespec *>I<abs_timeout>B<);>\n"
1156
1157 #. type: Plain text
1158 #: build/C/man3/sem_wait.3:45 build/C/man2/semop.2:53
1159 msgid ""
1160 "Feature Test Macro Requirements for glibc (see B<feature_test_macros>(7)):"
1161 msgstr "glibc 向けの機能検査マクロの要件 (B<feature_test_macros>(7)  参照):"
1162
1163 #. type: Plain text
1164 #: build/C/man3/sem_wait.3:49
1165 msgid ""
1166 "B<sem_timedwait>(): _POSIX_C_SOURCE\\ E<gt>=\\ 200112L || _XOPEN_SOURCE\\ "
1167 "E<gt>=\\ 600"
1168 msgstr ""
1169 "B<sem_timedwait>(): _POSIX_C_SOURCE\\ E<gt>=\\ 200112L || _XOPEN_SOURCE\\ "
1170 "E<gt>=\\ 600"
1171
1172 #. type: Plain text
1173 #: build/C/man3/sem_wait.3:59
1174 msgid ""
1175 "B<sem_wait>()  decrements (locks) the semaphore pointed to by I<sem>.  If "
1176 "the semaphore's value is greater than zero, then the decrement proceeds, and "
1177 "the function returns, immediately.  If the semaphore currently has the value "
1178 "zero, then the call blocks until either it becomes possible to perform the "
1179 "decrement (i.e., the semaphore value rises above zero), or a signal handler "
1180 "interrupts the call."
1181 msgstr ""
1182 "B<sem_wait>()  は I<sem> が指すセマフォの値を 1 減らす (ロックする)。 セマ"
1183 "フォの値が 0 より大きい場合、減算が実行され、関数は直ちに復帰する。 セマフォ"
1184 "の現在値が 0 の場合には、減算を実行できるようになる (つまり、セマフォの値が "
1185 "0 より大きな値になる) まで、もしくは シグナルハンドラによって呼び出しが中断さ"
1186 "れるまで、 関数呼び出しは停止 (block) する。"
1187
1188 #. type: Plain text
1189 #: build/C/man3/sem_wait.3:69
1190 msgid ""
1191 "B<sem_trywait>()  is the same as B<sem_wait>(), except that if the decrement "
1192 "cannot be immediately performed, then call returns an error (I<errno> set to "
1193 "B<EAGAIN>)  instead of blocking."
1194 msgstr ""
1195 "B<sem_trywait>()  は B<sem_wait>()  と同じだが、セマフォ値の減算をすぐに実行"
1196 "できなかった場合に、 停止 (block) するのではなくエラーで復帰する (I<errno> "
1197 "に B<EAGAIN> がセットされる) 点が異なる。"
1198
1199 #. type: Plain text
1200 #: build/C/man3/sem_wait.3:82
1201 msgid ""
1202 "B<sem_timedwait>()  is the same as B<sem_wait>(), except that I<abs_timeout> "
1203 "specifies a limit on the amount of time that the call should block if the "
1204 "decrement cannot be immediately performed.  The I<abs_timeout> argument "
1205 "points to a structure that specifies an absolute timeout in seconds and "
1206 "nanoseconds since the Epoch, 1970-01-01 00:00:00 +0000 (UTC).  This "
1207 "structure is defined as follows:"
1208 msgstr ""
1209 "B<sem_timedwait>()  は B<sem_wait>()  と同じだが、セマフォ値の減算をすぐに実"
1210 "行できなかった場合に 関数呼び出しが停止する時間の上限を I<abs_timeout> で指定"
1211 "する点が異なる。 I<abs_timeout> 引き数は、タイムアウト時刻を指定する構造体へ"
1212 "のポインタである。 この構造体には、タイムアウト時刻を時刻紀元 (Epoch; "
1213 "1970-01-01 00:00:00 +0000 (UTC)) からの 経過時間 (秒+ナノ秒) で指定する。 構"
1214 "造体は以下のように定義されている:"
1215
1216 #. type: Plain text
1217 #: build/C/man3/sem_wait.3:89
1218 #, no-wrap
1219 msgid ""
1220 "struct timespec {\n"
1221 "    time_t tv_sec;      /* Seconds */\n"
1222 "    long   tv_nsec;     /* Nanoseconds [0 .. 999999999] */\n"
1223 "};\n"
1224 msgstr ""
1225 "struct timespec {\n"
1226 "    time_t tv_sec;      /* Seconds */\n"
1227 "    long   tv_nsec;     /* Nanoseconds [0 .. 999999999] */\n"
1228 "};\n"
1229
1230 #. type: Plain text
1231 #: build/C/man3/sem_wait.3:100
1232 msgid ""
1233 "If the timeout has already expired by the time of the call, and the "
1234 "semaphore could not be locked immediately, then B<sem_timedwait>()  fails "
1235 "with a timeout error (I<errno> set to B<ETIMEDOUT>)."
1236 msgstr ""
1237 "関数呼び出し時点ですでにタイムアウトに指定した時刻が過ぎており、 かつセマフォ"
1238 "をすぐにロックできなかった場合は、 B<sem_timedwait>()  はタイムアウトエラー "
1239 "(I<errno> に B<ETIMEDOUT> がセットされる) で失敗する。"
1240
1241 #. type: Plain text
1242 #: build/C/man3/sem_wait.3:108
1243 msgid ""
1244 "If the operation can be performed immediately, then B<sem_timedwait>()  "
1245 "never fails with a timeout error, regardless of the value of "
1246 "I<abs_timeout>.  Furthermore, the validity of I<abs_timeout> is not checked "
1247 "in this case."
1248 msgstr ""
1249 "セマフォ操作がすぐに実行できるときは、 I<abs_timeout> がどんな値であっても "
1250 "B<sem_timedwait>()  が失敗することは決してない。さらにいうと、この場合には "
1251 "I<abs_timeout> の正当性の検査は行われない。"
1252
1253 #. type: Plain text
1254 #: build/C/man3/sem_wait.3:114
1255 msgid ""
1256 "All of these functions return 0 on success; on error, the value of the "
1257 "semaphore is left unchanged, -1 is returned, and I<errno> is set to indicate "
1258 "the error."
1259 msgstr ""
1260 "成功すると、これらの関数は 0 を返す。 エラーの場合、セマフォの値を変更せず"
1261 "に、-1 を返し、 I<errno> にエラーを示す値をセットする。"
1262
1263 #. type: TP
1264 #: build/C/man3/sem_wait.3:115 build/C/man2/semop.2:363
1265 #, no-wrap
1266 msgid "B<EINTR>"
1267 msgstr "B<EINTR>"
1268
1269 #. type: Plain text
1270 #: build/C/man3/sem_wait.3:119
1271 msgid "The call was interrupted by a signal handler; see B<signal>(7)."
1272 msgstr "呼び出しはシグナルハンドラにより中断された。 B<signal>(7)  参照。"
1273
1274 #. type: Plain text
1275 #: build/C/man3/sem_wait.3:126
1276 msgid "The following additional error can occur for B<sem_trywait>():"
1277 msgstr "B<sem_trywait>()  の場合には、上記に加えて以下のエラーも起こる。"
1278
1279 #. type: TP
1280 #: build/C/man3/sem_wait.3:126 build/C/man2/semop.2:338
1281 #, no-wrap
1282 msgid "B<EAGAIN>"
1283 msgstr "B<EAGAIN>"
1284
1285 #. type: Plain text
1286 #: build/C/man3/sem_wait.3:130
1287 msgid ""
1288 "The operation could not be performed without blocking (i.e., the semaphore "
1289 "currently has the value zero)."
1290 msgstr ""
1291 "停止 (block) せずにロック操作を完了できなかった (つまり、 セマフォの現在の値"
1292 "が 0 であった)。"
1293
1294 #. type: Plain text
1295 #: build/C/man3/sem_wait.3:133
1296 msgid "The following additional errors can occur for B<sem_timedwait>():"
1297 msgstr "B<sem_timedwait>()  の場合、以下のエラーも起こる。"
1298
1299 #. type: Plain text
1300 #: build/C/man3/sem_wait.3:138
1301 msgid ""
1302 "The value of I<abs_timeout.tv_nsecs> is less than 0, or greater than or "
1303 "equal to 1000 million."
1304 msgstr ""
1305 "I<abs_timeout.tv_nsecs> の値が 0 未満、もしくは 1,000,000,000 以上である。"
1306
1307 #. type: TP
1308 #: build/C/man3/sem_wait.3:138
1309 #, no-wrap
1310 msgid "B<ETIMEDOUT>"
1311 msgstr "B<ETIMEDOUT>"
1312
1313 #.  POSIX.1-2001 also allows EDEADLK -- "A deadlock condition
1314 #.  was detected", but this does not occur on Linux(?).
1315 #. type: Plain text
1316 #: build/C/man3/sem_wait.3:143
1317 msgid "The call timed out before the semaphore could be locked."
1318 msgstr "セマフォのロックに成功する前に時間切れとなった。"
1319
1320 #.  sem_wait() is always interrupted on most other implementations,
1321 #.  but on FreeBSD 5.4 SA_RESTART does cause restarting.
1322 #. type: Plain text
1323 #: build/C/man3/sem_wait.3:153
1324 msgid ""
1325 "A signal handler always interrupts a blocked call to one of these functions, "
1326 "regardless of the use of the B<sigaction>(2)  B<SA_RESTART> flag."
1327 msgstr ""
1328 "シグナルハンドラは、 B<sigaction>(2)  の B<SA_RESTART> フラグを使用しているか"
1329 "どうかに関わらず、これらの関数の呼び出しが 停止している場合、シグナルハンドラ"
1330 "により常に中断される。"
1331
1332 #. type: Plain text
1333 #: build/C/man3/sem_wait.3:172
1334 msgid ""
1335 "The (somewhat trivial) program shown below operates on an unnamed "
1336 "semaphore.  The program expects two command-line arguments.  The first "
1337 "argument specifies a seconds value that is used to set an alarm timer to "
1338 "generate a B<SIGALRM> signal.  This handler performs a B<sem_post>(3)  to "
1339 "increment the semaphore that is being waited on in I<main()> using "
1340 "B<sem_timedwait>().  The second command-line argument specifies the length "
1341 "of the timeout, in seconds, for B<sem_timedwait>().  The following shows "
1342 "what happens on two different runs of the program:"
1343 msgstr ""
1344 "以下に示す (ちょっとした) プログラムは名前なしセマフォの操作を行う。 プログラ"
1345 "ムはコマンドライン引き数を 2 つ取る。 最初の引き数には、 B<SIGALRM> シグナル"
1346 "を生成するためのアラームタイマーの設定に使われる値を 秒単位で指定する。このシ"
1347 "グナルハンドラは、 I<main()> 内で B<sem_timedwait>()  を使って待っているセマ"
1348 "フォを、 B<sem_post>(3)  を使って加算する。 2番目の引き数には、 "
1349 "B<sem_timedwait>()  に渡すタイムアウトまでの時間を秒単位で指定する。"
1350
1351 #. type: Plain text
1352 #: build/C/man3/sem_wait.3:182
1353 #, no-wrap
1354 msgid ""
1355 "$B< ./a.out 2 3>\n"
1356 "About to call sem_timedwait()\n"
1357 "sem_post() from handler\n"
1358 "sem_timedwait() succeeded\n"
1359 "$B< ./a.out 2 1>\n"
1360 "About to call sem_timedwait()\n"
1361 "sem_timedwait() timed out\n"
1362 msgstr ""
1363 "$B< ./a.out 2 3>\n"
1364 "About to call sem_timedwait()\n"
1365 "sem_post() from handler\n"
1366 "sem_timedwait() succeeded\n"
1367 "$B< ./a.out 2 1>\n"
1368 "About to call sem_timedwait()\n"
1369 "sem_timedwait() timed out\n"
1370
1371 #. type: SS
1372 #: build/C/man3/sem_wait.3:184
1373 #, no-wrap
1374 msgid "Program source"
1375 msgstr "プログラムのソース"
1376
1377 #. type: Plain text
1378 #: build/C/man3/sem_wait.3:195
1379 #, no-wrap
1380 msgid ""
1381 "#include E<lt>unistd.hE<gt>\n"
1382 "#include E<lt>stdio.hE<gt>\n"
1383 "#include E<lt>stdlib.hE<gt>\n"
1384 "#include E<lt>semaphore.hE<gt>\n"
1385 "#include E<lt>time.hE<gt>\n"
1386 "#include E<lt>assert.hE<gt>\n"
1387 "#include E<lt>errno.hE<gt>\n"
1388 "#include E<lt>signal.hE<gt>\n"
1389 msgstr ""
1390 "#include E<lt>unistd.hE<gt>\n"
1391 "#include E<lt>stdio.hE<gt>\n"
1392 "#include E<lt>stdlib.hE<gt>\n"
1393 "#include E<lt>semaphore.hE<gt>\n"
1394 "#include E<lt>time.hE<gt>\n"
1395 "#include E<lt>assert.hE<gt>\n"
1396 "#include E<lt>errno.hE<gt>\n"
1397 "#include E<lt>signal.hE<gt>\n"
1398
1399 #. type: Plain text
1400 #: build/C/man3/sem_wait.3:197
1401 #, no-wrap
1402 msgid "sem_t sem;\n"
1403 msgstr "sem_t sem;\n"
1404
1405 #. type: Plain text
1406 #: build/C/man3/sem_wait.3:200
1407 #, no-wrap
1408 msgid ""
1409 "#define handle_error(msg) \\e\n"
1410 "    do { perror(msg); exit(EXIT_FAILURE); } while (0)\n"
1411 msgstr ""
1412 "#define handle_error(msg) \\e\n"
1413 "    do { perror(msg); exit(EXIT_FAILURE); } while (0)\n"
1414
1415 #. type: Plain text
1416 #: build/C/man3/sem_wait.3:210
1417 #, no-wrap
1418 msgid ""
1419 "static void\n"
1420 "handler(int sig)\n"
1421 "{\n"
1422 "    write(STDOUT_FILENO, \"sem_post() from handler\\en\", 24);\n"
1423 "    if (sem_post(&sem) == -1) {\n"
1424 "        write(STDERR_FILENO, \"sem_post() failed\\en\", 18);\n"
1425 "        _exit(EXIT_FAILURE);\n"
1426 "    }\n"
1427 "}\n"
1428 msgstr ""
1429 "static void\n"
1430 "handler(int sig)\n"
1431 "{\n"
1432 "    write(STDOUT_FILENO, \"sem_post() from handler\\en\", 24);\n"
1433 "    if (sem_post(&sem) == -1) {\n"
1434 "        write(STDERR_FILENO, \"sem_post() failed\\en\", 18);\n"
1435 "        _exit(EXIT_FAILURE);\n"
1436 "    }\n"
1437 "}\n"
1438
1439 #. type: Plain text
1440 #: build/C/man3/sem_wait.3:217
1441 #, no-wrap
1442 msgid ""
1443 "int\n"
1444 "main(int argc, char *argv[])\n"
1445 "{\n"
1446 "    struct sigaction sa;\n"
1447 "    struct timespec ts;\n"
1448 "    int s;\n"
1449 msgstr ""
1450 "int\n"
1451 "main(int argc, char *argv[])\n"
1452 "{\n"
1453 "    struct sigaction sa;\n"
1454 "    struct timespec ts;\n"
1455 "    int s;\n"
1456
1457 #. type: Plain text
1458 #: build/C/man3/sem_wait.3:223
1459 #, no-wrap
1460 msgid ""
1461 "    if (argc != 3) {\n"
1462 "        fprintf(stderr, \"Usage: %s E<lt>alarm-secsE<gt> E<lt>wait-secsE<gt>\\en\",\n"
1463 "                argv[0]);\n"
1464 "        exit(EXIT_FAILURE);\n"
1465 "    }\n"
1466 msgstr ""
1467 "    if (argc != 3) {\n"
1468 "        fprintf(stderr, \"Usage: %s E<lt>alarm-secsE<gt> E<lt>wait-secsE<gt>\\en\",\n"
1469 "                argv[0]);\n"
1470 "        exit(EXIT_FAILURE);\n"
1471 "    }\n"
1472
1473 #. type: Plain text
1474 #: build/C/man3/sem_wait.3:226
1475 #, no-wrap
1476 msgid ""
1477 "    if (sem_init(&sem, 0, 0) == -1)\n"
1478 "        handle_error(\"sem_init\");\n"
1479 msgstr ""
1480 "    if (sem_init(&sem, 0, 0) == -1)\n"
1481 "        handle_error(\"sem_init\");\n"
1482
1483 #. type: Plain text
1484 #: build/C/man3/sem_wait.3:228
1485 #, no-wrap
1486 msgid "    /* Establish SIGALRM handler; set alarm timer using argv[1] */\n"
1487 msgstr "    /* Establish SIGALRM handler; set alarm timer using argv[1] */\n"
1488
1489 #. type: Plain text
1490 #: build/C/man3/sem_wait.3:234
1491 #, no-wrap
1492 msgid ""
1493 "    sa.sa_handler = handler;\n"
1494 "    sigemptyset(&sa.sa_mask);\n"
1495 "    sa.sa_flags = 0;\n"
1496 "    if (sigaction(SIGALRM, &sa, NULL) == -1)\n"
1497 "        handle_error(\"sigaction\");\n"
1498 msgstr ""
1499 "    sa.sa_handler = handler;\n"
1500 "    sigemptyset(&sa.sa_mask);\n"
1501 "    sa.sa_flags = 0;\n"
1502 "    if (sigaction(SIGALRM, &sa, NULL) == -1)\n"
1503 "        handle_error(\"sigaction\");\n"
1504
1505 #. type: Plain text
1506 #: build/C/man3/sem_wait.3:236
1507 #, no-wrap
1508 msgid "    alarm(atoi(argv[1]));\n"
1509 msgstr "    alarm(atoi(argv[1]));\n"
1510
1511 #. type: Plain text
1512 #: build/C/man3/sem_wait.3:239
1513 #, no-wrap
1514 msgid ""
1515 "    /* Calculate relative interval as current time plus\n"
1516 "       number of seconds given argv[2] */\n"
1517 msgstr ""
1518 "    /* Calculate relative interval as current time plus\n"
1519 "       number of seconds given argv[2] */\n"
1520
1521 #. type: Plain text
1522 #: build/C/man3/sem_wait.3:242
1523 #, no-wrap
1524 msgid ""
1525 "    if (clock_gettime(CLOCK_REALTIME, &ts) == -1)\n"
1526 "        handle_error(\"clock_gettime\");\n"
1527 msgstr ""
1528 "    if (clock_gettime(CLOCK_REALTIME, &ts) == -1)\n"
1529 "        handle_error(\"clock_gettime\");\n"
1530
1531 #. type: Plain text
1532 #: build/C/man3/sem_wait.3:244
1533 #, no-wrap
1534 msgid "    ts.tv_sec += atoi(argv[2]);\n"
1535 msgstr "    ts.tv_sec += atoi(argv[2]);\n"
1536
1537 #. type: Plain text
1538 #: build/C/man3/sem_wait.3:248
1539 #, no-wrap
1540 msgid ""
1541 "    printf(\"main() about to call sem_timedwait()\\en\");\n"
1542 "    while ((s = sem_timedwait(&sem, &ts)) == -1 && errno == EINTR)\n"
1543 "        continue;       /* Restart if interrupted by handler */\n"
1544 msgstr ""
1545 "    printf(\"main() about to call sem_timedwait()\\en\");\n"
1546 "    while ((s = sem_timedwait(&sem, &ts)) == -1 && errno == EINTR)\n"
1547 "        continue;       /* Restart if interrupted by handler */\n"
1548
1549 #. type: Plain text
1550 #: build/C/man3/sem_wait.3:250
1551 #, no-wrap
1552 msgid "    /* Check what happened */\n"
1553 msgstr "    /* Check what happened */\n"
1554
1555 #. type: Plain text
1556 #: build/C/man3/sem_wait.3:258
1557 #, no-wrap
1558 msgid ""
1559 "    if (s == -1) {\n"
1560 "        if (errno == ETIMEDOUT)\n"
1561 "            printf(\"sem_timedwait() timed out\\en\");\n"
1562 "        else\n"
1563 "            perror(\"sem_timedwait\");\n"
1564 "    } else\n"
1565 "        printf(\"sem_timedwait() succeeded\\en\");\n"
1566 msgstr ""
1567 "    if (s == -1) {\n"
1568 "        if (errno == ETIMEDOUT)\n"
1569 "            printf(\"sem_timedwait() timed out\\en\");\n"
1570 "        else\n"
1571 "            perror(\"sem_timedwait\");\n"
1572 "    } else\n"
1573 "        printf(\"sem_timedwait() succeeded\\en\");\n"
1574
1575 #. type: Plain text
1576 #: build/C/man3/sem_wait.3:261
1577 #, no-wrap
1578 msgid ""
1579 "    exit((s == 0) ? EXIT_SUCCESS : EXIT_FAILURE);\n"
1580 "}\n"
1581 msgstr ""
1582 "    exit((s == 0) ? EXIT_SUCCESS : EXIT_FAILURE);\n"
1583 "}\n"
1584
1585 #. type: Plain text
1586 #: build/C/man3/sem_wait.3:268
1587 msgid ""
1588 "B<clock_gettime>(2), B<sem_getvalue>(3), B<sem_post>(3), B<sem_overview>(7), "
1589 "B<time>(7)"
1590 msgstr ""
1591 "B<clock_gettime>(2), B<sem_getvalue>(3), B<sem_post>(3), B<sem_overview>(7), "
1592 "B<time>(7)"
1593
1594 #. type: TH
1595 #: build/C/man2/semctl.2:41
1596 #, no-wrap
1597 msgid "SEMCTL"
1598 msgstr "SEMCTL"
1599
1600 #. type: TH
1601 #: build/C/man2/semctl.2:41
1602 #, no-wrap
1603 msgid "2013-06-03"
1604 msgstr "2013-06-03"
1605
1606 #. type: Plain text
1607 #: build/C/man2/semctl.2:44
1608 msgid "semctl - System V semaphore control operations"
1609 msgstr "semctl - System V セマフォの制御操作を行なう"
1610
1611 #. type: Plain text
1612 #: build/C/man2/semctl.2:49 build/C/man2/semget.2:44 build/C/man2/semop.2:43
1613 #, no-wrap
1614 msgid ""
1615 "B<#include E<lt>sys/types.hE<gt>>\n"
1616 "B<#include E<lt>sys/ipc.hE<gt>>\n"
1617 "B<#include E<lt>sys/sem.hE<gt>>\n"
1618 msgstr ""
1619 "B<#include E<lt>sys/types.hE<gt>>\n"
1620 "B<#include E<lt>sys/ipc.hE<gt>>\n"
1621 "B<#include E<lt>sys/sem.hE<gt>>\n"
1622
1623 #. type: Plain text
1624 #: build/C/man2/semctl.2:51
1625 #, no-wrap
1626 msgid "B<int semctl(int >I<semid>B<, int >I<semnum>B<, int >I<cmd>B<, ...);>\n"
1627 msgstr "B<int semctl(int >I<semid>B<, int >I<semnum>B<, int >I<cmd>B<, ...);>\n"
1628
1629 #. type: Plain text
1630 #: build/C/man2/semctl.2:62
1631 msgid ""
1632 "B<semctl>()  performs the control operation specified by I<cmd> on the "
1633 "System V semaphore set identified by I<semid>, or on the I<semnum>-th "
1634 "semaphore of that set.  (The semaphores in a set are numbered starting at 0.)"
1635 msgstr ""
1636 "B<semctl>()  は、 I<semid> で指定された System V セマフォ集合 (semaphore "
1637 "set)  またはセマフォ集合の I<semnun> 番目のセマフォに対して、 I<cmd> で指定さ"
1638 "れた制御操作を行なう (集合内のセマフォの番号は 0 から始まる)。"
1639
1640 #. type: Plain text
1641 #: build/C/man2/semctl.2:68
1642 msgid ""
1643 "This function has three or four arguments, depending on I<cmd>.  When there "
1644 "are four, the fourth has the type I<union semun>.  The I<calling program> "
1645 "must define this union as follows:"
1646 msgstr ""
1647 "この関数は、 I<cmd> の値に依存して、3 個または 4 個の引き数を持つ。 引き数が "
1648 "4 個の場合、第 4 引き数の型は I<union semun> である。 I<呼び出し元プログラム>"
1649 "は、 この共用体 (union) を以下のように定義しなければならない。"
1650
1651 #. type: Plain text
1652 #: build/C/man2/semctl.2:78
1653 #, no-wrap
1654 msgid ""
1655 "union semun {\n"
1656 "    int              val;    /* Value for SETVAL */\n"
1657 "    struct semid_ds *buf;    /* Buffer for IPC_STAT, IPC_SET */\n"
1658 "    unsigned short  *array;  /* Array for GETALL, SETALL */\n"
1659 "    struct seminfo  *__buf;  /* Buffer for IPC_INFO\n"
1660 "                                (Linux-specific) */\n"
1661 "};\n"
1662 msgstr ""
1663 "union semun {\n"
1664 "    int              val;    /* SETVAL の値 */\n"
1665 "    struct semid_ds *buf;    /* IPC_STAT, IPC_SET 用のバッファ */\n"
1666 "    unsigned short  *array;  /* GETALL, SETALL 用の配列 */\n"
1667 "    struct seminfo  *__buf;  /* IPC_INFO 用のバッファ\n"
1668 "                                (Linux 固有) */\n"
1669 "};\n"
1670
1671 #. type: Plain text
1672 #: build/C/man2/semctl.2:84
1673 msgid ""
1674 "The I<semid_ds> data structure is defined in I<E<lt>sys/sem.hE<gt>> as "
1675 "follows:"
1676 msgstr ""
1677 "I<semid_ds> データ構造体は I<E<lt>sys/sem.hE<gt>> で以下のように定義されてい"
1678 "る:"
1679
1680 #. type: Plain text
1681 #: build/C/man2/semctl.2:93
1682 #, no-wrap
1683 msgid ""
1684 "struct semid_ds {\n"
1685 "    struct ipc_perm sem_perm;  /* Ownership and permissions */\n"
1686 "    time_t          sem_otime; /* Last semop time */\n"
1687 "    time_t          sem_ctime; /* Last change time */\n"
1688 "    unsigned long   sem_nsems; /* No. of semaphores in set */\n"
1689 "};\n"
1690 msgstr ""
1691 "struct semid_ds {\n"
1692 "    struct ipc_perm sem_perm;  /* 所有権と許可 */\n"
1693 "    time_t          sem_otime; /* 最後の semop の時刻 */\n"
1694 "    time_t          sem_ctime; /* 最後に変更が行われた時刻 */\n"
1695 "    unsigned long   sem_nsems; /* 集合内のセマフォの数 */\n"
1696 "};\n"
1697
1698 #. type: Plain text
1699 #: build/C/man2/semctl.2:101
1700 msgid ""
1701 "The I<ipc_perm> structure is defined as follows (the highlighted fields are "
1702 "settable using B<IPC_SET>):"
1703 msgstr ""
1704 "I<ipc_perm> 構造体は以下のように定義されている (強調されたフィールドは "
1705 "B<IPC_SET> を使って設定可能である):"
1706
1707 #. type: Plain text
1708 #: build/C/man2/semctl.2:113
1709 #, no-wrap
1710 msgid ""
1711 "struct ipc_perm {\n"
1712 "    key_t          __key; /* Key supplied to semget(2) */\n"
1713 "    uid_t          B<uid>;   /* Effective UID of owner */\n"
1714 "    gid_t          B<gid>;   /* Effective GID of owner */\n"
1715 "    uid_t          cuid;  /* Effective UID of creator */\n"
1716 "    gid_t          cgid;  /* Effective GID of creator */\n"
1717 "    unsigned short B<mode>;  /* Permissions */\n"
1718 "    unsigned short __seq; /* Sequence number */\n"
1719 "};\n"
1720 msgstr ""
1721 "struct ipc_perm {\n"
1722 "    key_t          __key; /* semget(2) に与えられるキー */\n"
1723 "    uid_t          B<uid>;   /* 所有者 (owner) の実効 UID */\n"
1724 "    gid_t          B<gid>;   /* 所有者の実効 GID */\n"
1725 "    uid_t          cuid;  /* 作成者 (creator) の実効 UID */\n"
1726 "    gid_t          cgid;  /* 作成者の実効 GID */\n"
1727 "    unsigned short B<mode>;  /* 許可 */\n"
1728 "    unsigned short __seq; /* シーケンス番号 */\n"
1729 "};\n"
1730
1731 #. type: Plain text
1732 #: build/C/man2/semctl.2:119
1733 msgid "Valid values for I<cmd> are:"
1734 msgstr "I<cmd> として有効な値は次の通りである。"
1735
1736 #. type: TP
1737 #: build/C/man2/semctl.2:119
1738 #, no-wrap
1739 msgid "B<IPC_STAT>"
1740 msgstr "B<IPC_STAT>"
1741
1742 #. type: Plain text
1743 #: build/C/man2/semctl.2:131
1744 msgid ""
1745 "Copy information from the kernel data structure associated with I<semid> "
1746 "into the I<semid_ds> structure pointed to by I<arg.buf>.  The argument "
1747 "I<semnum> is ignored.  The calling process must have read permission on the "
1748 "semaphore set."
1749 msgstr ""
1750 "I<semid> に関連づけられたカーネルデータ構造体の情報を I<arg.buf> で指された "
1751 "I<semid_ds> 構造体へコピーする。 I<semnum> 引き数は無視される。 呼び出したプ"
1752 "ロセスはそのセマフォ集合に対する 読み込み許可を持たなければならない。"
1753
1754 #. type: TP
1755 #: build/C/man2/semctl.2:131
1756 #, no-wrap
1757 msgid "B<IPC_SET>"
1758 msgstr "B<IPC_SET>"
1759
1760 #. type: Plain text
1761 #: build/C/man2/semctl.2:154
1762 msgid ""
1763 "Write the values of some members of the I<semid_ds> structure pointed to by "
1764 "I<arg.buf> to the kernel data structure associated with this semaphore set, "
1765 "updating also its I<sem_ctime> member.  The following members of the "
1766 "structure are updated: I<sem_perm.uid>, I<sem_perm.gid>, and (the least "
1767 "significant 9 bits of)  I<sem_perm.mode>.  The effective UID of the calling "
1768 "process must match the owner (I<sem_perm.uid>)  or creator (I<sem_perm."
1769 "cuid>)  of the semaphore set, or the caller must be privileged.  The "
1770 "argument I<semnum> is ignored."
1771 msgstr ""
1772 "I<arg.buf> で指定された I<semid_ds> 構造体のメンバーのいくつかの値を、 このセ"
1773 "マフォに関連づけられたカーネルデータ構造体に書き込み、 I<sem_ctime> メンバー"
1774 "の値も更新する。 構造体の以下のメンバーが更新される: I<sem_perm.uid>, "
1775 "I<sem_perm.gid>, I<sem_perm.mode> (の最下位 9 ビット)。 呼び出したプロセスの"
1776 "実効 UID が所有者 (I<sem_perm.uid>)  または作成者 (I<sem_perm.cuid>)  と一致"
1777 "するか、呼び出した人が特権を持たなければならない。 I<semnum> 引き数は無視され"
1778 "る。"
1779
1780 #. type: TP
1781 #: build/C/man2/semctl.2:154
1782 #, no-wrap
1783 msgid "B<IPC_RMID>"
1784 msgstr "B<IPC_RMID>"
1785
1786 #. type: Plain text
1787 #: build/C/man2/semctl.2:169
1788 msgid ""
1789 "Immediately remove the semaphore set, awakening all processes blocked in "
1790 "B<semop>(2)  calls on the set (with an error return and I<errno> set to "
1791 "B<EIDRM>).  The effective user ID of the calling process must match the "
1792 "creator or owner of the semaphore set, or the caller must be privileged.  "
1793 "The argument I<semnum> is ignored."
1794 msgstr ""
1795 "セマフォ集合をただちに削除し、その集合上の B<semop>(2)  コールでブロックされ"
1796 "ている全てのプロセスを目覚めさせる (エラー値が返されて、 I<errno> に "
1797 "B<EIDRM> が設定される)。 呼び出したプロセスの実効ユーザ ID が そのセマフォ集"
1798 "合の作成者または所有者と一致するか、 呼び出した人が特権を持たなければならな"
1799 "い。 I<semnum> 引き数は無視される。"
1800
1801 #. type: TP
1802 #: build/C/man2/semctl.2:169
1803 #, no-wrap
1804 msgid "B<IPC_INFO> (Linux-specific)"
1805 msgstr "B<IPC_INFO> (Linux 固有)"
1806
1807 #. type: Plain text
1808 #: build/C/man2/semctl.2:181
1809 msgid ""
1810 "Returns information about system-wide semaphore limits and parameters in the "
1811 "structure pointed to by I<arg.__buf>.  This structure is of type I<seminfo>, "
1812 "defined in I<E<lt>sys/sem.hE<gt>> if the B<_GNU_SOURCE> feature test macro "
1813 "is defined:"
1814 msgstr ""
1815 "システム全体でのセマフォの制限とパラメータに関する情報を、 I<arg.__buf> が指"
1816 "す構造体に入れて返す。 この構造体は I<seminfo> 型である。 I<seminfo> は "
1817 "B<_GNU_SOURCE> 機能検査マクロが定義された場合に I<E<lt>sys/sem.hE<gt>> で以下"
1818 "のように定義される:"
1819
1820 #. type: Plain text
1821 #: build/C/man2/semctl.2:203
1822 #, no-wrap
1823 msgid ""
1824 "struct  seminfo {\n"
1825 "    int semmap;  /* Number of entries in semaphore\n"
1826 "                    map; unused within kernel */\n"
1827 "    int semmni;  /* Maximum number of semaphore sets */\n"
1828 "    int semmns;  /* Maximum number of semaphores in all\n"
1829 "                    semaphore sets */\n"
1830 "    int semmnu;  /* System-wide maximum number of undo\n"
1831 "                    structures; unused within kernel */\n"
1832 "    int semmsl;  /* Maximum number of semaphores in a\n"
1833 "                    set */\n"
1834 "    int semopm;  /* Maximum number of operations for\n"
1835 "                    semop(2) */\n"
1836 "    int semume;  /* Maximum number of undo entries per\n"
1837 "                    process; unused within kernel */\n"
1838 "    int semusz;  /* Size of struct sem_undo */\n"
1839 "    int semvmx;  /* Maximum semaphore value */\n"
1840 "    int semaem;  /* Max. value that can be recorded for\n"
1841 "                    semaphore adjustment (SEM_UNDO) */\n"
1842 "};\n"
1843 msgstr ""
1844 "struct  seminfo {\n"
1845 "    int semmap;  /* セマフォ・マップの最大エントリ数;\n"
1846 "                    カーネル内では未使用 */\n"
1847 "    int semmni;  /* セマフォ集合の最大数 */\n"
1848 "    int semmns;  /* 全セマフォ集合中のセマフォの\n"
1849 "                    最大数 */\n"
1850 "    int semmnu;  /* アンドゥ構造体のシステム全体での\n"
1851 "                    最大数; カーネル内では未使用 */\n"
1852 "    int semmsl;  /* 一つのセマフォ集合の最大セマフォ数 */\n"
1853 "    int semopm;  /* semop(2) に渡す操作の最大数 */\n"
1854 "    int semume;  /* プロセスあたりのアンドゥ・エントリ\n"
1855 "                    の最大数; カーネル内では未使用 */\n"
1856 "    int semusz;  /* 構造体 sem_undo のサイズ */\n"
1857 "    int semvmx;  /* セマフォの最大値 */\n"
1858 "    int semaem;  /* セマフォの調整 (semaphore adjustment;\n"
1859 "                     SEM_UNDO) のために記録される最大値 */\n"
1860 "};\n"
1861
1862 #. type: Plain text
1863 #: build/C/man2/semctl.2:217
1864 msgid ""
1865 "The I<semmsl>, I<semmns>, I<semopm>, and I<semmni> settings can be changed "
1866 "via I</proc/sys/kernel/sem>; see B<proc>(5)  for details."
1867 msgstr ""
1868 "設定 I<semmsl>, I<semmns>, I<semopm>, I<semmni> は I</proc/sys/kernel/sem> 経"
1869 "由で変更可能である。 詳しくは B<proc>(5)  を参照。"
1870
1871 #. type: TP
1872 #: build/C/man2/semctl.2:217
1873 #, no-wrap
1874 msgid "B<SEM_INFO> (Linux-specific)"
1875 msgstr "B<SEM_INFO> (Linux 固有)"
1876
1877 #. type: Plain text
1878 #: build/C/man2/semctl.2:231
1879 msgid ""
1880 "Returns a I<seminfo> structure containing the same information as for "
1881 "B<IPC_INFO>, except that the following fields are returned with information "
1882 "about system resources consumed by semaphores: the I<semusz> field returns "
1883 "the number of semaphore sets that currently exist on the system; and the "
1884 "I<semaem> field returns the total number of semaphores in all semaphore sets "
1885 "on the system."
1886 msgstr ""
1887 "B<IPC_INFO> のときと同じ情報を格納した I<seminfo> 構造体を返す。 但し、以下の"
1888 "フィールドにはセマフォが消費しているシステム資源に 関する情報が格納される点が"
1889 "異なる。 I<semusz> フィールドは現在システム上に存在するセマフォ集合の数を返"
1890 "す。 I<semaem> フィールドはシステム上の全てのセマフォ集合に含まれる セマフォ"
1891 "の総数を返す。"
1892
1893 #. type: TP
1894 #: build/C/man2/semctl.2:231
1895 #, no-wrap
1896 msgid "B<SEM_STAT> (Linux-specific)"
1897 msgstr "B<SEM_STAT> (Linux 固有)"
1898
1899 #. type: Plain text
1900 #: build/C/man2/semctl.2:242
1901 msgid ""
1902 "Returns a I<semid_ds> structure as for B<IPC_STAT>.  However, the I<semid> "
1903 "argument is not a semaphore identifier, but instead an index into the "
1904 "kernel's internal array that maintains information about all semaphore sets "
1905 "on the system."
1906 msgstr ""
1907 "B<IPC_STAT> と同じく I<semid_ds> 構造体を返す。 但し、 I<semid> 引き数は、セ"
1908 "マフォ識別子ではなく、システム上の全てのセマフォ集合 に関する情報を管理する"
1909 "カーネルの内部配列へのインデックスである。"
1910
1911 #. type: TP
1912 #: build/C/man2/semctl.2:242
1913 #, no-wrap
1914 msgid "B<GETALL>"
1915 msgstr "B<GETALL>"
1916
1917 #. type: Plain text
1918 #: build/C/man2/semctl.2:253
1919 msgid ""
1920 "Return B<semval> (i.e., the current value)  for all semaphores of the set "
1921 "into I<arg.array>.  The argument I<semnum> is ignored.  The calling process "
1922 "must have read permission on the semaphore set."
1923 msgstr ""
1924 "集合の全てのセマフォの B<semval> の値 (現在の値) を I<arg.array> に返す。 "
1925 "I<semnum> 引き数は無視される。 呼び出したプロセスはそのセマフォ集合に読み込み"
1926 "許可を持たなければならない。"
1927
1928 #. type: TP
1929 #: build/C/man2/semctl.2:253 build/C/man2/semctl.2:351
1930 #, no-wrap
1931 msgid "B<GETNCNT>"
1932 msgstr "B<GETNCNT>"
1933
1934 #. type: Plain text
1935 #: build/C/man2/semctl.2:266
1936 msgid ""
1937 "The system call returns the value of B<semncnt> for the I<semnum>-th "
1938 "semaphore of the set (i.e., the number of processes waiting for an increase "
1939 "of B<semval> for the I<semnum>-th semaphore of the set).  The calling "
1940 "process must have read permission on the semaphore set."
1941 msgstr ""
1942 "システムコールは集合の I<semnum> 番目のセマフォの B<semncnt> の値を返す (集合"
1943 "の I<semnum> 番目のセマフォの B<semval> の増加を待っているプロセスの数を返"
1944 "す)。 呼び出したプロセスはそのセマフォ集合に読み込み許可を持たなければならな"
1945 "い。"
1946
1947 #. type: TP
1948 #: build/C/man2/semctl.2:266 build/C/man2/semctl.2:355
1949 #, no-wrap
1950 msgid "B<GETPID>"
1951 msgstr "B<GETPID>"
1952
1953 #. type: Plain text
1954 #: build/C/man2/semctl.2:279
1955 msgid ""
1956 "The system call returns the value of B<sempid> for the I<semnum>-th "
1957 "semaphore of the set (i.e., the PID of the process that executed the last "
1958 "B<semop>(2)  call for the I<semnum>-th semaphore of the set).  The calling "
1959 "process must have read permission on the semaphore set."
1960 msgstr ""
1961 "システムコールは集合の I<semnum> 番目のセマフォの B<sempid> の値 (集合の "
1962 "I<semnum> 番目のセマフォに最後に B<semop>(2)  コールを実行したプロセスの "
1963 "PID) を返す。 呼び出したプロセスはそのセマフォ集合に読み込み許可を持たなけれ"
1964 "ばならない。"
1965
1966 #. type: TP
1967 #: build/C/man2/semctl.2:279 build/C/man2/semctl.2:359
1968 #, no-wrap
1969 msgid "B<GETVAL>"
1970 msgstr "B<GETVAL>"
1971
1972 #. type: Plain text
1973 #: build/C/man2/semctl.2:287
1974 msgid ""
1975 "The system call returns the value of B<semval> for the I<semnum>-th "
1976 "semaphore of the set.  The calling process must have read permission on the "
1977 "semaphore set."
1978 msgstr ""
1979 "システムコールは集合の I<semnum> 番目のセマフォの B<semval> の値を返す。 呼び"
1980 "出したプロセスはそのセマフォ集合に読み込み許可を持たなければならない。"
1981
1982 #. type: TP
1983 #: build/C/man2/semctl.2:287 build/C/man2/semctl.2:363
1984 #, no-wrap
1985 msgid "B<GETZCNT>"
1986 msgstr "B<GETZCNT>"
1987
1988 #. type: Plain text
1989 #: build/C/man2/semctl.2:300
1990 msgid ""
1991 "The system call returns the value of B<semzcnt> for the I<semnum>-th "
1992 "semaphore of the set (i.e., the number of processes waiting for B<semval> of "
1993 "the I<semnum>-th semaphore of the set to become 0).  The calling process "
1994 "must have read permission on the semaphore set."
1995 msgstr ""
1996 "システムコールは集合の I<semnum> 番目のセマフォの B<semzcnt> の値を返す (集合"
1997 "の I<semnum> 番目のセマフォの B<semval> の値が 0 になるのを待っているプロセス"
1998 "の数を返す)。 呼び出したプロセスはそのセマフォ集合に読み込み許可を持たなけれ"
1999 "ばならない。"
2000
2001 #. type: TP
2002 #: build/C/man2/semctl.2:300
2003 #, no-wrap
2004 msgid "B<SETALL>"
2005 msgstr "B<SETALL>"
2006
2007 #. type: Plain text
2008 #: build/C/man2/semctl.2:322
2009 msgid ""
2010 "Set B<semval> for all semaphores of the set using I<arg.array>, updating "
2011 "also the I<sem_ctime> member of the I<semid_ds> structure associated with "
2012 "the set.  Undo entries (see B<semop>(2))  are cleared for altered semaphores "
2013 "in all processes.  If the changes to semaphore values would permit blocked "
2014 "B<semop>(2)  calls in other processes to proceed, then those processes are "
2015 "woken up.  The argument I<semnum> is ignored.  The calling process must have "
2016 "alter (write) permission on the semaphore set."
2017 msgstr ""
2018 "集合の全てのセマフォの B<semval> に I<arg.array> で指定された値を設定する。 "
2019 "その集合に関連する I<semid_ds> 構造体の I<sem_ctime> メンバーの値も更新す"
2020 "る。 全てのプロセスのセマフォの変更についてのアンドゥ・エントリ (B<semop>"
2021 "(2)  を参照) は消去 (clear) される。 セマフォの値の変更により、他のプロセス内"
2022 "でブロックされている B<semop>(2)  コールの続行が許可されると、それらのプロセ"
2023 "スは起こされる (wake up)。 I<semnum> 引き数は無視される。 呼び出したプロセス"
2024 "はそのセマフォ集合に 変更 (書き込み) 許可を持たなければならない。"
2025
2026 #. type: TP
2027 #: build/C/man2/semctl.2:322
2028 #, no-wrap
2029 msgid "B<SETVAL>"
2030 msgstr "B<SETVAL>"
2031
2032 #. type: Plain text
2033 #: build/C/man2/semctl.2:340
2034 msgid ""
2035 "Set the value of B<semval> to I<arg.val> for the I<semnum>-th semaphore of "
2036 "the set, updating also the I<sem_ctime> member of the I<semid_ds> structure "
2037 "associated with the set.  Undo entries are cleared for altered semaphores in "
2038 "all processes.  If the changes to semaphore values would permit blocked "
2039 "B<semop>(2)  calls in other processes to proceed, then those processes are "
2040 "woken up.  The calling process must have alter permission on the semaphore "
2041 "set."
2042 msgstr ""
2043 "集合の I<semnum> 番目のセマフォの B<semval> に I<arg.val> の値を設定する。そ"
2044 "の集合に関連する I<semid_ds> 構造体の I<sem_ctime> メンバーの値も更新する。 "
2045 "全てのプロセスのセマフォの変更についてのアンドゥ・エントリは消去される。 セマ"
2046 "フォの値の変更により、他のプロセス内でブロックされている B<semop>(2)  コール"
2047 "の続行が許可されると、それらのプロセスは起こされる (wake up)。 呼び出したプロ"
2048 "セスはそのセマフォ集合に 変更 (書き込み) 許可を持たなければならない。"
2049
2050 #. type: Plain text
2051 #: build/C/man2/semctl.2:347
2052 msgid "On failure B<semctl>()  returns -1 with I<errno> indicating the error."
2053 msgstr ""
2054 "失敗した場合、 B<semctl>()  は -1 を返し、 I<errno> にそのエラーを示す。"
2055
2056 #. type: Plain text
2057 #: build/C/man2/semctl.2:351
2058 msgid ""
2059 "Otherwise the system call returns a nonnegative value depending on I<cmd> as "
2060 "follows:"
2061 msgstr "そうでなければシステムコールは I<cmd> によって以下の負でない値を返す:"
2062
2063 #. type: Plain text
2064 #: build/C/man2/semctl.2:355
2065 msgid "the value of B<semncnt>."
2066 msgstr "B<semncnt> の値"
2067
2068 #. type: Plain text
2069 #: build/C/man2/semctl.2:359
2070 msgid "the value of B<sempid>."
2071 msgstr "B<sempid> の値"
2072
2073 #. type: Plain text
2074 #: build/C/man2/semctl.2:363
2075 msgid "the value of B<semval>."
2076 msgstr "B<semval> の値"
2077
2078 #. type: Plain text
2079 #: build/C/man2/semctl.2:367
2080 msgid "the value of B<semzcnt>."
2081 msgstr "B<semzcnt> の値"
2082
2083 #. type: TP
2084 #: build/C/man2/semctl.2:367
2085 #, no-wrap
2086 msgid "B<IPC_INFO>"
2087 msgstr "B<IPC_INFO>"
2088
2089 #. type: Plain text
2090 #: build/C/man2/semctl.2:375
2091 msgid ""
2092 "the index of the highest used entry in the kernel's internal array recording "
2093 "information about all semaphore sets.  (This information can be used with "
2094 "repeated B<SEM_STAT> operations to obtain information about all semaphore "
2095 "sets on the system.)"
2096 msgstr ""
2097 "全てのセマフォ集合に関する情報を管理しているカーネルの内部配列の使用中 エント"
2098 "リのインデックスの最大値 (この情報は、システムの全てのセマフォ集合に関する情"
2099 "報を取得するために B<SEM_STAT> 操作を繰り返し実行する際に使用できる)"
2100
2101 #. type: TP
2102 #: build/C/man2/semctl.2:375
2103 #, no-wrap
2104 msgid "B<SEM_INFO>"
2105 msgstr "B<SEM_INFO>"
2106
2107 #. type: Plain text
2108 #: build/C/man2/semctl.2:379
2109 msgid "As for B<IPC_INFO>."
2110 msgstr "B<IPC_INFO> と同じ"
2111
2112 #. type: TP
2113 #: build/C/man2/semctl.2:379
2114 #, no-wrap
2115 msgid "B<SEM_STAT>"
2116 msgstr "B<SEM_STAT>"
2117
2118 #. type: Plain text
2119 #: build/C/man2/semctl.2:383
2120 msgid "the identifier of the semaphore set whose index was given in I<semid>."
2121 msgstr "I<semid> で指定されたインデックスを持つセマフォ集合の識別子"
2122
2123 #. type: Plain text
2124 #: build/C/man2/semctl.2:387
2125 msgid "All other I<cmd> values return 0 on success."
2126 msgstr "I<cmd> の値がそれ以外の場合、成功すると 0 が返される。"
2127
2128 #. type: Plain text
2129 #: build/C/man2/semctl.2:391
2130 msgid "On failure, I<errno> will be set to one of the following:"
2131 msgstr "失敗した場合は I<errno> には以下の値のどれかが設定される:"
2132
2133 #. type: Plain text
2134 #: build/C/man2/semctl.2:410
2135 msgid ""
2136 "The argument I<cmd> has one of the values B<GETALL>, B<GETPID>, B<GETVAL>, "
2137 "B<GETNCNT>, B<GETZCNT>, B<IPC_STAT>, B<SEM_STAT>, B<SETALL>, or B<SETVAL> "
2138 "and the calling process does not have the required permissions on the "
2139 "semaphore set and does not have the B<CAP_IPC_OWNER> capability."
2140 msgstr ""
2141 "I<cmd> 引き数が B<GETALL>, B<GETPID>, B<GETVAL>, B<GETNCNT>, B<GETZCNT>, "
2142 "B<IPC_STAT>, B<SEM_STAT>, B<SETALL>, B<SETVAL> のうちの何れかの値を持ち、 呼"
2143 "び出したプロセスがセマフォに対して必要とされる許可と B<CAP_IPC_OWNER> ケーパ"
2144 "ビリティ (capability) を持っていない。"
2145
2146 #. type: TP
2147 #: build/C/man2/semctl.2:410 build/C/man2/semop.2:347
2148 #, no-wrap
2149 msgid "B<EFAULT>"
2150 msgstr "B<EFAULT>"
2151
2152 #. type: Plain text
2153 #: build/C/man2/semctl.2:417
2154 msgid "The address pointed to by I<arg.buf> or I<arg.array> isn't accessible."
2155 msgstr ""
2156 "I<arg.buf> または I<arg.array> で指されているアドレスにアクセスすることができ"
2157 "ない。"
2158
2159 #. type: TP
2160 #: build/C/man2/semctl.2:417 build/C/man2/semop.2:360
2161 #, no-wrap
2162 msgid "B<EIDRM>"
2163 msgstr "B<EIDRM>"
2164
2165 #. type: Plain text
2166 #: build/C/man2/semctl.2:420 build/C/man2/semop.2:363
2167 msgid "The semaphore set was removed."
2168 msgstr "セマフォ集合が削除された。"
2169
2170 #. type: Plain text
2171 #: build/C/man2/semctl.2:431
2172 msgid ""
2173 "Invalid value for I<cmd> or I<semid>.  Or: for a B<SEM_STAT> operation, the "
2174 "index value specified in I<semid> referred to an array slot that is "
2175 "currently unused."
2176 msgstr ""
2177 "I<cmd> または I<semid> に無効な値が指定された。 もしくは、 B<SEM_STAT> 操作の"
2178 "場合に、 I<semid> で指定されたインデックス値が現在未使用の配列のスロットを参"
2179 "照いていた。"
2180
2181 #. type: TP
2182 #: build/C/man2/semctl.2:431
2183 #, no-wrap
2184 msgid "B<EPERM>"
2185 msgstr "B<EPERM>"
2186
2187 #. type: Plain text
2188 #: build/C/man2/semctl.2:449
2189 msgid ""
2190 "The argument I<cmd> has the value B<IPC_SET> or B<IPC_RMID> but the "
2191 "effective user ID of the calling process is not the creator (as found in "
2192 "I<sem_perm.cuid>)  or the owner (as found in I<sem_perm.uid>)  of the "
2193 "semaphore set, and the process does not have the B<CAP_SYS_ADMIN> capability."
2194 msgstr ""
2195 "I<cmd> 引き数に B<IPC_SET> または B<IPC_RMID> が指定され、呼び出したプロセス"
2196 "の実効ユーザ ID がセマフォの (I<sem_perm.cuid> で見つかる) 作成者または "
2197 "(I<sem_perm.uid> で見つかる) 所有者でもなく、 プロセスが B<CAP_SYS_ADMIN> "
2198 "ケーパビリティを持たない。"
2199
2200 #. type: TP
2201 #: build/C/man2/semctl.2:449 build/C/man2/semop.2:382
2202 #, no-wrap
2203 msgid "B<ERANGE>"
2204 msgstr "B<ERANGE>"
2205
2206 #. type: Plain text
2207 #: build/C/man2/semctl.2:462
2208 msgid ""
2209 "The argument I<cmd> has the value B<SETALL> or B<SETVAL> and the value to "
2210 "which B<semval> is to be set (for some semaphore of the set) is less than 0 "
2211 "or greater than the implementation limit B<SEMVMX>."
2212 msgstr ""
2213 "I<cmd> 引き数に B<SETALL> または B<SETVAL> が指定され、(集合のセマフォのどれ"
2214 "かの)  B<semval> に設定される値が 0 より小さいか、実装の制限 B<SEMVMX> よりも"
2215 "大きい。"
2216
2217 #.  SVr4 documents additional error conditions EINVAL, EFBIG, ENOSPC.
2218 #. type: Plain text
2219 #: build/C/man2/semctl.2:465 build/C/man2/semget.2:223
2220 #: build/C/man2/semop.2:400
2221 msgid "SVr4, POSIX.1-2001."
2222 msgstr "SVr4, POSIX.1-2001."
2223
2224 #. type: Plain text
2225 #: build/C/man2/semctl.2:476
2226 msgid ""
2227 "POSIX.1-2001 specifies the I<sem_nsems> field of the I<semid_ds> structure "
2228 "as having the type I<unsigned\\ short>, and the field is so defined on most "
2229 "other systems.  It was also so defined on Linux 2.2 and earlier, but, since "
2230 "Linux 2.4, the field has the type I<unsigned\\ long>."
2231 msgstr ""
2232 "POSIX.1-2001 では I<semid_ds> 構造体の I<sem_nsems> フィールドは I<unsigned"
2233 "\\ short> 型を持つと規定されており、 他のほとんどのシステムでこのフィールド"
2234 "は I<unsigned\\ short> 型になっている。 Linux 2.4 以前ではそうなっていたが、 "
2235 "Linux 2.4 以降ではこのフィールドは I<unsigned\\ long> 型である。"
2236
2237 #.  Like Linux, the FreeBSD man pages still document
2238 #.  the inclusion of these header files.
2239 #. type: Plain text
2240 #: build/C/man2/semctl.2:489 build/C/man2/semget.2:236
2241 #: build/C/man2/semop.2:413
2242 msgid ""
2243 "The inclusion of I<E<lt>sys/types.hE<gt>> and I<E<lt>sys/ipc.hE<gt>> isn't "
2244 "required on Linux or by any version of POSIX.  However, some old "
2245 "implementations required the inclusion of these header files, and the SVID "
2246 "also documented their inclusion.  Applications intended to be portable to "
2247 "such old systems may need to include these header files."
2248 msgstr ""
2249 "Linux や POSIX の全てのバージョンでは、 I<E<lt>sys/types.hE<gt>> と "
2250 "I<E<lt>sys/ipc.hE<gt>> のインクルードは必要ない。しかしながら、いくつかの古い"
2251 "実装ではこれらのヘッダファイルのインクルードが必要であり、 SVID でもこれらの"
2252 "インクルードをするように記載されている。このような古いシステムへの移植性を意"
2253 "図したアプリケーションではこれらのファイルをインクルードする必要があるかもし"
2254 "れない。"
2255
2256 #. type: Plain text
2257 #: build/C/man2/semctl.2:501
2258 #, fuzzy
2259 #| msgid ""
2260 #| "The B<IPC_INFO>, B<SEM_STAT> and B<SEM_INFO> operations are used by the "
2261 #| "B<ipcs>(1)  program to provide information on allocated resources.  In "
2262 #| "the future these may modified or moved to a /proc file system interface."
2263 msgid ""
2264 "The B<IPC_INFO>, B<SEM_STAT> and B<SEM_INFO> operations are used by the "
2265 "B<ipcs>(1)  program to provide information on allocated resources.  In the "
2266 "future these may modified or moved to a I</proc> filesystem interface."
2267 msgstr ""
2268 "B<IPC_INFO>, B<SEM_STAT>, B<SEM_INFO> 操作は B<ipcs>(1)  プログラムによって割"
2269 "当られた資源について情報を提供するために使用される。 将来的にはこれらは変更さ"
2270 "れるか、 /proc ファイル・システム・インタフェースに移動されるかもしれない。"
2271
2272 #. type: Plain text
2273 #: build/C/man2/semctl.2:514
2274 msgid ""
2275 "Various fields in a I<struct semid_ds> were typed as I<short> under Linux "
2276 "2.2 and have become I<long> under Linux 2.4.  To take advantage of this, a "
2277 "recompilation under glibc-2.1.91 or later should suffice.  (The kernel "
2278 "distinguishes old and new calls by an B<IPC_64> flag in I<cmd>.)"
2279 msgstr ""
2280 "I<構造体 semid_ds> 内の多くのフィールドは、 Linux 2.2 では I<short> 型だった"
2281 "が、Linux 2.4 では I<long> 型になった。 この利点を生かすには、glibc-2.1.91 以"
2282 "降の環境下で 再コンパイルすれば十分である。 カーネルは新しい形式の呼び出しと"
2283 "古い形式の呼び出しを I<cmd> 内の B<IPC_64> フラグで区別する。"
2284
2285 #. type: Plain text
2286 #: build/C/man2/semctl.2:523
2287 msgid ""
2288 "In some earlier versions of glibc, the I<semun> union was defined in "
2289 "I<E<lt>sys/sem.hE<gt>>, but POSIX.1-2001 requires that the caller define "
2290 "this union.  On versions of glibc where this union is I<not> defined, the "
2291 "macro B<_SEM_SEMUN_UNDEFINED> is defined in I<E<lt>sys/sem.hE<gt>>."
2292 msgstr ""
2293 "初期のバージョンの glibc では、 I<semun> 共用体は I<E<lt>sys/sem.hE<gt>> で定"
2294 "義されていたが、 POSIX.1-2001 では呼び出し側がこの共用体を定義する必要があ"
2295 "る。 この共用体が定義されてI<いない> glibc のバージョンでは、 マクロ "
2296 "B<_SEM_SEMUN_UNDEFINED> が I<E<lt>sys/sem.hE<gt>> で定義されている。"
2297
2298 #. type: Plain text
2299 #: build/C/man2/semctl.2:527
2300 msgid ""
2301 "The following system limit on semaphore sets affects a B<semctl>()  call:"
2302 msgstr "以下は B<semctl>()  コールに影響するセマフォ集合のシステム制限:"
2303
2304 #. type: TP
2305 #: build/C/man2/semctl.2:527 build/C/man2/semop.2:469
2306 #, no-wrap
2307 msgid "B<SEMVMX>"
2308 msgstr "B<SEMVMX>"
2309
2310 #. type: Plain text
2311 #: build/C/man2/semctl.2:532
2312 msgid "Maximum value for B<semval>: implementation dependent (32767)."
2313 msgstr "B<semval> の最大値 : 実装依存 (32767)。"
2314
2315 #. type: Plain text
2316 #: build/C/man2/semctl.2:536
2317 msgid ""
2318 "For greater portability it is best to always call B<semctl>()  with four "
2319 "arguments."
2320 msgstr ""
2321 "移植性を高めるための一番良い方法は、常に 4 個の引き数で B<semctl>()  を呼び出"
2322 "すことである。"
2323
2324 #. type: Plain text
2325 #: build/C/man2/semctl.2:543
2326 msgid ""
2327 "B<ipc>(2), B<semget>(2), B<semop>(2), B<capabilities>(7), B<sem_overview>"
2328 "(7), B<svipc>(7)"
2329 msgstr ""
2330 "B<ipc>(2), B<semget>(2), B<semop>(2), B<capabilities>(7), B<sem_overview>"
2331 "(7), B<svipc>(7)"
2332
2333 #. type: TH
2334 #: build/C/man2/semget.2:36
2335 #, no-wrap
2336 msgid "SEMGET"
2337 msgstr "SEMGET"
2338
2339 #. type: TH
2340 #: build/C/man2/semget.2:36
2341 #, no-wrap
2342 msgid "2012-05-31"
2343 msgstr "2012-05-31"
2344
2345 #. type: Plain text
2346 #: build/C/man2/semget.2:39
2347 msgid "semget - get a System V semaphore set identifier"
2348 msgstr "semget - System V セマフォ集合の識別子を取得する"
2349
2350 #. type: Plain text
2351 #: build/C/man2/semget.2:49
2352 msgid ""
2353 "B<int semget(key_t >I<key>B<,> B<int >I<nsems>B<,> B<int >I<semflg>B<);>"
2354 msgstr ""
2355 "B<int semget(key_t >I<key>B<,> B<int >I<nsems>B<,> B<int >I<semflg>B<);>"
2356
2357 #. type: Plain text
2358 #: build/C/man2/semget.2:67
2359 msgid ""
2360 "The B<semget>()  system call returns the System V semaphore set identifier "
2361 "associated with the argument I<key>.  A new set of I<nsems> semaphores is "
2362 "created if I<key> has the value B<IPC_PRIVATE> or if no existing semaphore "
2363 "set is associated with I<key> and B<IPC_CREAT> is specified in I<semflg>."
2364 msgstr ""
2365 "B<semget>()  システムコールは、引き数 I<key> に対応する System V セマフォ集"
2366 "合 (semaphore set) の 識別子 (identifier) を返す。 I<key> の値が "
2367 "B<IPC_PRIVATE> の場合、もしくは I<semflg> に B<IPC_CREAT> が指定されていて、 "
2368 "I<key> に対応するセマフォ集合が存在しない場合、 I<nsems> 個のセマフォからなる"
2369 "新しい集合が作成される。"
2370
2371 #. type: Plain text
2372 #: build/C/man2/semget.2:86
2373 msgid ""
2374 "If I<semflg> specifies both B<IPC_CREAT> and B<IPC_EXCL> and a semaphore set "
2375 "already exists for I<key>, then B<semget>()  fails with I<errno> set to "
2376 "B<EEXIST>.  (This is analogous to the effect of the combination B<O_CREAT | "
2377 "O_EXCL> for B<open>(2).)"
2378 msgstr ""
2379 "I<semflg> に B<IPC_CREAT> と B<IPC_EXCL> の両方が指定された場合、 I<key> に対"
2380 "応するセマフォ集合が既に存在すると、 B<semget>()  は失敗し、 I<errno> に "
2381 "B<EEXIST> が設定される (これは B<open>(2)  に B<O_CREAT | O_EXCL> が指定され"
2382 "た場合の動作と同じである)。"
2383
2384 #. type: Plain text
2385 #: build/C/man2/semget.2:99
2386 msgid ""
2387 "Upon creation, the least significant 9 bits of the argument I<semflg> define "
2388 "the permissions (for owner, group and others)  for the semaphore set.  These "
2389 "bits have the same format, and the same meaning, as the I<mode> argument of "
2390 "B<open>(2)  (though the execute permissions are not meaningful for "
2391 "semaphores, and write permissions mean permission to alter semaphore values)."
2392 msgstr ""
2393 "セマフォ集合作成時に、引き数 I<semflg> の下位 9 ビットは、そのセマフォ集合の "
2394 "(所有者 (owner)、グループ (group)、 他人 (others) に対する) アクセス許可の定"
2395 "義として使用される。 これらのビットは B<open>(2)  の引き数 I<mode> と同じ形式"
2396 "で同じ意味である (但し、実行 (execute) 許可はセマフォでは意味を持たず、 書き"
2397 "込み (write) 許可はセマフォ値の変更 (alter) 許可として機能する)。"
2398
2399 #.  In truth, every one of the many implementations that I've tested sets
2400 #.  the values to zero, but I suppose there is/was some obscure
2401 #.  implementation out there that does not.
2402 #. type: Plain text
2403 #: build/C/man2/semget.2:109
2404 msgid ""
2405 "The values of the semaphores in a newly created set are indeterminate.  "
2406 "(POSIX.1-2001 is explicit on this point.)  Although Linux, like many other "
2407 "implementations, initializes the semaphore values to 0, a portable "
2408 "application cannot rely on this: it should explicitly initialize the "
2409 "semaphores to the desired values."
2410 msgstr ""
2411 "新しく作成されたセマフォ集合の各セマフォの値は不定である (この点は "
2412 "POSIX.1-2001 に明記されている)。 Linux は他の多くの実装と同様にセマフォ値を "
2413 "0 に初期化するが、 移植性を考慮したアプリケーションではこの動作を前提にすべき"
2414 "ではない。 アプリケーションは明示的にセマフォを希望の値で初期化すべきである。"
2415
2416 #. type: Plain text
2417 #: build/C/man2/semget.2:117
2418 msgid ""
2419 "When creating a new semaphore set, B<semget>()  initializes the set's "
2420 "associated data structure, I<semid_ds> (see B<semctl>(2)), as follows:"
2421 msgstr ""
2422 "新規のセマフォ集合を作成する際、 B<semget>()  はセマフォ集合の情報を保持する"
2423 "データ構造体 I<semid_ds> を次のように初期化する (I<semid_ds> については "
2424 "B<semctl>(2)  を参照):"
2425
2426 #. type: Plain text
2427 #: build/C/man2/semget.2:122
2428 msgid ""
2429 "I<sem_perm.cuid> and I<sem_perm.uid> are set to the effective user ID of the "
2430 "calling process."
2431 msgstr ""
2432 "I<sem_perm.cuid> と I<sem_perm.uid> に、呼び出し元のプロセスの実効 "
2433 "(effective) ユーザ ID を設定する。"
2434
2435 #. type: Plain text
2436 #: build/C/man2/semget.2:127
2437 msgid ""
2438 "I<sem_perm.cgid> and I<sem_perm.gid> are set to the effective group ID of "
2439 "the calling process."
2440 msgstr ""
2441 "I<sem_perm.cgid> と I<sem_perm.gid> に、呼び出し元のプロセスの実効 "
2442 "(effective) グループ ID を設定する。"
2443
2444 #. type: Plain text
2445 #: build/C/man2/semget.2:132
2446 msgid ""
2447 "The least significant 9 bits of I<sem_perm.mode> are set to the least "
2448 "significant 9 bits of I<semflg>."
2449 msgstr ""
2450 "I<sem_perm.mode> の下位 9 ビットに I<semflg> の下位 9 ビットを設定する。"
2451
2452 #. type: Plain text
2453 #: build/C/man2/semget.2:136
2454 msgid "I<sem_nsems> is set to the value of I<nsems>."
2455 msgstr "I<sem_nsems> に I<nsems> の値を設定する。"
2456
2457 #. type: Plain text
2458 #: build/C/man2/semget.2:139
2459 msgid "I<sem_otime> is set to 0."
2460 msgstr "I<sem_otime> に 0 を設定する。"
2461
2462 #. type: Plain text
2463 #: build/C/man2/semget.2:142
2464 msgid "I<sem_ctime> is set to the current time."
2465 msgstr "I<sem_ctime> に現在の時刻を設定する。"
2466
2467 #. type: Plain text
2468 #: build/C/man2/semget.2:153
2469 msgid ""
2470 "The argument I<nsems> can be 0 (a don't care)  when a semaphore set is not "
2471 "being created.  Otherwise I<nsems> must be greater than 0 and less than or "
2472 "equal to the maximum number of semaphores per semaphore set (B<SEMMSL>)."
2473 msgstr ""
2474 "セマフォ集合の作成を行わない場合は、引き数 I<nsems> に (don't care を意味す"
2475 "る) 0 を指定してもよい。 そうでない場合は、 I<nsems> は 0 より大きい値でなけ"
2476 "ればならず、セマフォ集合あたりのセマフォの最大数 (B<SEMMSL>)  以下でなければ"
2477 "ならない。"
2478
2479 #.  and a check is made to see if it is marked for destruction.
2480 #. type: Plain text
2481 #: build/C/man2/semget.2:157
2482 msgid "If the semaphore set already exists, the permissions are verified."
2483 msgstr "セマフォ集合が既に存在した場合は、アクセス許可の検査が行われる。"
2484
2485 #. type: Plain text
2486 #: build/C/man2/semget.2:163
2487 msgid ""
2488 "If successful, the return value will be the semaphore set identifier (a "
2489 "nonnegative integer), otherwise -1 is returned, with I<errno> indicating the "
2490 "error."
2491 msgstr ""
2492 "成功した場合、セマフォ集合の識別子 (非負の整数) が返り値となる。 失敗した場合"
2493 "は -1 が返され、 I<errno> にエラーを示す値が設定される。"
2494
2495 #. type: Plain text
2496 #: build/C/man2/semget.2:167
2497 msgid "On failure I<errno> will be set to one of the following:"
2498 msgstr "失敗した場合、 I<errno> には以下の値のいずれか一つが設定される:"
2499
2500 #. type: Plain text
2501 #: build/C/man2/semget.2:175
2502 msgid ""
2503 "A semaphore set exists for I<key>, but the calling process does not have "
2504 "permission to access the set, and does not have the B<CAP_IPC_OWNER> "
2505 "capability."
2506 msgstr ""
2507 "I<key> に対応するセマフォ集合は存在するが、 呼び出し元のプロセスはその集合へ"
2508 "のアクセス許可がなく、 B<CAP_IPC_OWNER> ケーパビリティも持っていない。"
2509
2510 #.  .TP
2511 #.  .B EIDRM
2512 #.  The semaphore set is marked to be deleted.
2513 #. type: Plain text
2514 #: build/C/man2/semget.2:188
2515 msgid ""
2516 "A semaphore set exists for I<key> and I<semflg> specified both B<IPC_CREAT> "
2517 "and B<IPC_EXCL>."
2518 msgstr ""
2519 "I<key> に対応するセマフォ集合が存在し、 I<semflg> には B<IPC_CREAT> と "
2520 "B<IPC_EXCL> が指定されていた。"
2521
2522 #. type: Plain text
2523 #: build/C/man2/semget.2:199
2524 msgid ""
2525 "I<nsems> is less than 0 or greater than the limit on the number of "
2526 "semaphores per semaphore set (B<SEMMSL>), or a semaphore set corresponding "
2527 "to I<key> already exists, and I<nsems> is larger than the number of "
2528 "semaphores in that set."
2529 msgstr ""
2530 "I<nsems> が 0 より小さいか、セマフォ集合あたりのセマフォの最大数 "
2531 "(B<SEMMSL>)  より大きい。 または、 I<key> に対応するセマフォ集合が既に存在"
2532 "し、 I<nsems> がその集合のセマフォ数よりも大きい。"
2533
2534 #. type: Plain text
2535 #: build/C/man2/semget.2:207
2536 msgid ""
2537 "No semaphore set exists for I<key> and I<semflg> did not specify "
2538 "B<IPC_CREAT>."
2539 msgstr ""
2540 "I<key> に対応するセマフォ集合が存在せず、 I<semflg> に B<IPC_CREAT> が指定さ"
2541 "れてもいない。"
2542
2543 #. type: Plain text
2544 #: build/C/man2/semget.2:211
2545 msgid ""
2546 "A semaphore set has to be created but the system does not have enough memory "
2547 "for the new data structure."
2548 msgstr ""
2549 "セマフォ集合を作成しようとしたが、新しいデータ構造体を 作成するのに十分なメモ"
2550 "リがシステムに存在しない。"
2551
2552 #. type: TP
2553 #: build/C/man2/semget.2:211
2554 #, no-wrap
2555 msgid "B<ENOSPC>"
2556 msgstr "B<ENOSPC>"
2557
2558 #. type: Plain text
2559 #: build/C/man2/semget.2:219
2560 msgid ""
2561 "A semaphore set has to be created but the system limit for the maximum "
2562 "number of semaphore sets (B<SEMMNI>), or the system wide maximum number of "
2563 "semaphores (B<SEMMNS>), would be exceeded."
2564 msgstr ""
2565 "セマフォ集合を作成しようとすると、システムのセマフォ集合の 最大数 "
2566 "(B<SEMMNI>)  か、システム全体のセマフォの最大数 (B<SEMMNS>)  のいずれかを超え"
2567 "てしまう。"
2568
2569 #. type: Plain text
2570 #: build/C/man2/semget.2:246
2571 msgid ""
2572 "B<IPC_PRIVATE> isn't a flag field but a I<key_t> type.  If this special "
2573 "value is used for I<key>, the system call ignores everything but the least "
2574 "significant 9 bits of I<semflg> and creates a new semaphore set (on success)."
2575 msgstr ""
2576 "B<IPC_PRIVATE> はフラグ・フィールドに指定するものではなく、 I<key_t> 型であ"
2577 "る。 この特別な値が I<key> に指定されると、 B<semget>()  I<semflg> の下位 9 "
2578 "ビット以外は全て無視し、 (成功した場合は) 新しいセマフォ集合を作成する。"
2579
2580 #. type: Plain text
2581 #: build/C/man2/semget.2:250
2582 msgid ""
2583 "The following limits on semaphore set resources affect the B<semget>()  call:"
2584 msgstr ""
2585 "セマフォ集合のリソースに関する制限のうち、 B<semget>()  に影響を及ぼすものを"
2586 "以下に挙げる:"
2587
2588 #. type: TP
2589 #: build/C/man2/semget.2:250
2590 #, no-wrap
2591 msgid "B<SEMMNI>"
2592 msgstr "B<SEMMNI>"
2593
2594 #.  This /proc file is not available in Linux 2.2 and earlier -- MTK
2595 #. type: Plain text
2596 #: build/C/man2/semget.2:256
2597 msgid ""
2598 "System wide maximum number of semaphore sets: policy dependent (on Linux, "
2599 "this limit can be read and modified via the fourth field of I</proc/sys/"
2600 "kernel/sem>)."
2601 msgstr ""
2602 "システム全体のセマフォ集合の最大数: 方針依存 (Linux では、この制限値は I</"
2603 "proc/sys/kernel/sem> の第4フィールドに対応し、読み出しも変更もできる)。"
2604
2605 #. type: TP
2606 #: build/C/man2/semget.2:256
2607 #, no-wrap
2608 msgid "B<SEMMSL>"
2609 msgstr "B<SEMMSL>"
2610
2611 #. type: Plain text
2612 #: build/C/man2/semget.2:261
2613 msgid ""
2614 "Maximum number of semaphores per semid: implementation dependent (on Linux, "
2615 "this limit can be read and modified via the first field of I</proc/sys/"
2616 "kernel/sem>)."
2617 msgstr ""
2618 "semid あたりのセマフォの最大数: 実装依存 (Linux では、この制限値は I</proc/"
2619 "sys/kernel/sem> の第1フィールドに対応し、読み出しも変更もできる)。"
2620
2621 #. type: TP
2622 #: build/C/man2/semget.2:261
2623 #, no-wrap
2624 msgid "B<SEMMNS>"
2625 msgstr "B<SEMMNS>"
2626
2627 #. type: Plain text
2628 #: build/C/man2/semget.2:269
2629 msgid ""
2630 "System wide maximum number of semaphores: policy dependent (on Linux, this "
2631 "limit can be read and modified via the second field of I</proc/sys/kernel/"
2632 "sem>).  Values greater than B<SEMMSL * SEMMNI> makes it irrelevant."
2633 msgstr ""
2634 "システム全体のセマフォの最大数: 方針依存 (Linux では、この制限値は I</proc/"
2635 "sys/kernel/sem> の第2フィールドに対応し、読み出しも変更もできる)。 B<SEMMSL "
2636 "* SEMMNI> より大きな値は意味を持たない。"
2637
2638 #. type: SH
2639 #: build/C/man2/semget.2:269 build/C/man2/semop.2:481
2640 #, no-wrap
2641 msgid "BUGS"
2642 msgstr "バグ"
2643
2644 #. type: Plain text
2645 #: build/C/man2/semget.2:275
2646 msgid ""
2647 "The name choice B<IPC_PRIVATE> was perhaps unfortunate, B<IPC_NEW> would "
2648 "more clearly show its function."
2649 msgstr ""
2650 "B<IPC_PRIVATE> という名前を選んだのはおそらく失敗であろう。 B<IPC_NEW> の方が"
2651 "より明確にその機能を表しているだろう。"
2652
2653 #.  In fact they are initialized to zero on Linux, but POSIX.1-2001
2654 #.  does not specify this, and we can't portably rely on it.
2655 #. type: Plain text
2656 #: build/C/man2/semget.2:294
2657 msgid ""
2658 "The semaphores in a set are not initialized by B<semget>().  In order to "
2659 "initialize the semaphores, B<semctl>(2)  must be used to perform a B<SETVAL> "
2660 "or a B<SETALL> operation on the semaphore set.  (Where multiple peers do not "
2661 "know who will be the first to initialize the set, checking for a nonzero "
2662 "I<sem_otime> in the associated data structure retrieved by a B<semctl>(2)  "
2663 "B<IPC_STAT> operation can be used to avoid races.)"
2664 msgstr ""
2665 "セマフォ集合内のセマフォは B<semget>()  では初期化されない。 このセマフォを初"
2666 "期化するには、セマフォ集合に対して B<semctl>(2)  を使って B<SETVAL> か "
2667 "B<SETALL> 操作を実行する必要がある。 (複数箇所からセマフォ集合の操作が行われ"
2668 "る場面では、 誰が最初に集合を初期化すればよいか分からない。 この状況を避ける"
2669 "には、 B<semctl>(2)  の B<IPC_STAT> 操作で取得できるセマフォのデータ構造体の "
2670 "I<sem_otime> が 0 以外になっているかをチェックすればよい。)"
2671
2672 #. type: Plain text
2673 #: build/C/man2/semget.2:301
2674 msgid ""
2675 "B<semctl>(2), B<semop>(2), B<ftok>(3), B<capabilities>(7), B<sem_overview>"
2676 "(7), B<svipc>(7)"
2677 msgstr ""
2678 "B<semctl>(2), B<semop>(2), B<ftok>(3), B<capabilities>(7), B<sem_overview>"
2679 "(7), B<svipc>(7)"
2680
2681 #. type: TH
2682 #: build/C/man2/semop.2:35
2683 #, no-wrap
2684 msgid "SEMOP"
2685 msgstr "SEMOP"
2686
2687 #. type: TH
2688 #: build/C/man2/semop.2:35
2689 #, no-wrap
2690 msgid "2013-04-17"
2691 msgstr "2013-04-17"
2692
2693 #. type: Plain text
2694 #: build/C/man2/semop.2:38
2695 msgid "semop, semtimedop - System V semaphore operations"
2696 msgstr "semop, semtimedop - System V セマフォの操作"
2697
2698 #. type: Plain text
2699 #: build/C/man2/semop.2:45
2700 #, no-wrap
2701 msgid "B<int semop(int >I<semid>B<, struct sembuf *>I<sops>B<, unsigned >I<nsops>B<);>\n"
2702 msgstr "B<int semop(int >I<semid>B<, struct sembuf *>I<sops>B<, unsigned >I<nsops>B<);>\n"
2703
2704 #. type: Plain text
2705 #: build/C/man2/semop.2:48
2706 #, no-wrap
2707 msgid ""
2708 "B<int semtimedop(int >I<semid>B<, struct sembuf *>I<sops>B<, unsigned >I<nsops>B<,>\n"
2709 "B<               struct timespec *>I<timeout>B<);>\n"
2710 msgstr ""
2711 "B<int semtimedop(int >I<semid>B<, struct sembuf *>I<sops>B<, unsigned >I<nsops>B<,>\n"
2712 "B<               struct timespec *>I<timeout>B<);>\n"
2713
2714 #. type: Plain text
2715 #: build/C/man2/semop.2:57
2716 msgid "B<semtimedop>(): _GNU_SOURCE"
2717 msgstr "B<semtimedop>(): _GNU_SOURCE"
2718
2719 #. type: Plain text
2720 #: build/C/man2/semop.2:60
2721 msgid ""
2722 "Each semaphore in a System V semaphore set has the following associated "
2723 "values:"
2724 msgstr ""
2725 "System V セマフォ集合 (semaphore set) のメンバーの各セマフォは 以下の関連情報"
2726 "を持っている:"
2727
2728 #. type: Plain text
2729 #: build/C/man2/semop.2:67
2730 #, no-wrap
2731 msgid ""
2732 "unsigned short  semval;   /* semaphore value */\n"
2733 "unsigned short  semzcnt;  /* # waiting for zero */\n"
2734 "unsigned short  semncnt;  /* # waiting for increase */\n"
2735 "pid_t           sempid;   /* ID of process that did last op */\n"
2736 msgstr ""
2737 "unsigned short  semval;   /* セマフォ値 */\n"
2738 "unsigned short  semzcnt;  /* ゼロを待つプロセス数 */\n"
2739 "unsigned short  semncnt;  /* 増加を待つプロセス数 */\n"
2740 "pid_t           sempid;   /* 最後に操作を行なったプロセスの ID */\n"
2741
2742 #. type: Plain text
2743 #: build/C/man2/semop.2:81
2744 msgid ""
2745 "B<semop>()  performs operations on selected semaphores in the set indicated "
2746 "by I<semid>.  Each of the I<nsops> elements in the array pointed to by "
2747 "I<sops> specifies an operation to be performed on a single semaphore.  The "
2748 "elements of this structure are of type I<struct sembuf>, containing the "
2749 "following members:"
2750 msgstr ""
2751 "B<semop>()  は I<semid> で指定されたセマフォ集合の選択されたセマフォに対して"
2752 "操作を行う。 I<sops> は I<nsops> 個の要素の配列を指し、配列の各要素は個々のセ"
2753 "マフォに 対する操作を示す。その型は I<struct sembuf> で、次のメンバを持つ:"
2754
2755 #. type: Plain text
2756 #: build/C/man2/semop.2:87
2757 #, no-wrap
2758 msgid ""
2759 "unsigned short sem_num;  /* semaphore number */\n"
2760 "short          sem_op;   /* semaphore operation */\n"
2761 "short          sem_flg;  /* operation flags */\n"
2762 msgstr ""
2763 "unsigned short sem_num;  /* セマフォ番号 */\n"
2764 "short          sem_op;   /* セマフォ操作 */\n"
2765 "short          sem_flg;  /* 操作フラグ */\n"
2766
2767 #. type: Plain text
2768 #: build/C/man2/semop.2:99
2769 msgid ""
2770 "Flags recognized in I<sem_flg> are B<IPC_NOWAIT> and B<SEM_UNDO>.  If an "
2771 "operation specifies B<SEM_UNDO>, it will be automatically undone when the "
2772 "process terminates."
2773 msgstr ""
2774 "I<sem_flg> には B<IPC_NOWAIT> と B<SEM_UNDO> が設定できる。 B<SEM_UNDO> が指"
2775 "定された操作は、そのプロセスが終了した時に自動的に取り消される。"
2776
2777 #. type: Plain text
2778 #: build/C/man2/semop.2:114
2779 msgid ""
2780 "The set of operations contained in I<sops> is performed in I<array order>, "
2781 "and I<atomically>, that is, the operations are performed either as a "
2782 "complete unit, or not at all.  The behavior of the system call if not all "
2783 "operations can be performed immediately depends on the presence of the "
2784 "B<IPC_NOWAIT> flag in the individual I<sem_flg> fields, as noted below."
2785 msgstr ""
2786 "I<sops> に含まれる操作の集合は、 I<配列の順序> で、 I<アトミックに> 実行され"
2787 "る。 すなわち、全ての操作が完全に実行されるか、全く実行されないかの どちらか"
2788 "となる。 全ての操作が直ちに実行できない場合のこのシステムコールの振る舞いは "
2789 "個々の操作の I<sem_flg> フィールドに B<IPC_NOWAIT> が存在するかによって決ま"
2790 "り、後述のようになる。"
2791
2792 #. type: Plain text
2793 #: build/C/man2/semop.2:121
2794 msgid ""
2795 "Each operation is performed on the I<sem_num>-th semaphore of the semaphore "
2796 "set, where the first semaphore of the set is numbered 0.  There are three "
2797 "types of operation, distinguished by the value of I<sem_op>."
2798 msgstr ""
2799 "それぞれの操作はセマフォ集合の I<sem_num>番目 のセマフォに対して実行される。"
2800 "セマフォ集合の最初のセマフォには 番号 0 が振られる。 そして操作は三種類あ"
2801 "り、 I<sem_op> の値で区別される。"
2802
2803 #. type: Plain text
2804 #: build/C/man2/semop.2:136
2805 msgid ""
2806 "If I<sem_op> is a positive integer, the operation adds this value to the "
2807 "semaphore value (I<semval>).  Furthermore, if B<SEM_UNDO> is specified for "
2808 "this operation, the system subtracts the value I<sem_op> from the semaphore "
2809 "adjustment (I<semadj>)  value for this semaphore.  This operation can always "
2810 "proceed\\(emit never forces a thread to wait.  The calling process must have "
2811 "alter permission on the semaphore set."
2812 msgstr ""
2813 "I<sem_op> が正の整数の場合、その値をセマフォの値 (I<semval>) に加算する。 さ"
2814 "らに、この操作で B<SEM_UNDO> が指定されていた場合は、 システムはこのセマフォ"
2815 "のの調整値 (I<semadj>) から値 I<sem_op> を減算する。 この操作は必ず実行で"
2816 "き、 スレッドの停止は起こらない。 呼び出し元プロセスは対象のセマフォ集合を変"
2817 "更する許可がなければならない。"
2818
2819 #. type: Plain text
2820 #: build/C/man2/semop.2:161
2821 msgid ""
2822 "If I<sem_op> is zero, the process must have read permission on the semaphore "
2823 "set.  This is a \"wait-for-zero\" operation: if I<semval> is zero, the "
2824 "operation can immediately proceed.  Otherwise, if B<IPC_NOWAIT> is specified "
2825 "in I<sem_flg>, B<semop>()  fails with I<errno> set to B<EAGAIN> (and none of "
2826 "the operations in I<sops> is performed).  Otherwise I<semzcnt> (the count of "
2827 "threads waiting until this semaphore's value becomes zero)  is incremented "
2828 "by one and the thread sleeps until one of the following occurs:"
2829 msgstr ""
2830 "I<sem_op> が 0 の場合、「ゼロまで待つ」操作である。この場合、プロセスは その"
2831 "セマフォ集合に対する読み込み許可がなければならない。 I<semval> が 0 ならば、"
2832 "操作は直ちに行われる。 I<semval> が 0 でない場合、 I<sem_flg> に "
2833 "B<IPC_NOWAIT> が指定されていれば、 B<semop>()  は失敗し、 B<errno> に "
2834 "B<EAGAIN> が設定される (このとき I<sops> に対する操作は全く実行されない)。 "
2835 "I<sem_flg> に B<IPC_NOWAIT> が指定されていない場合、 I<semzcnt> (セマフォ値"
2836 "が 0 になるのを待っているスレッドの数) を 1 増加させて、 以下のいずれかが起こ"
2837 "るまでスレッドを停止 (sleep) する。"
2838
2839 #. type: IP
2840 #: build/C/man2/semop.2:161 build/C/man2/semop.2:166 build/C/man2/semop.2:174
2841 #: build/C/man2/semop.2:184 build/C/man2/semop.2:237 build/C/man2/semop.2:242
2842 #: build/C/man2/semop.2:249 build/C/man2/semop.2:259
2843 #, no-wrap
2844 msgid "\\(bu"
2845 msgstr "\\(bu"
2846
2847 #. type: Plain text
2848 #: build/C/man2/semop.2:166
2849 msgid ""
2850 "I<semval> becomes 0, at which time the value of I<semzcnt> is decremented."
2851 msgstr "I<semval> が 0 になった: このとき I<semzcnt> の値は 1 減算される。"
2852
2853 #. type: Plain text
2854 #: build/C/man2/semop.2:174
2855 msgid ""
2856 "The semaphore set is removed: B<semop>()  fails, with I<errno> set to "
2857 "B<EIDRM>."
2858 msgstr ""
2859 "セマフォ集合が削除された: このとき B<semop>()  は失敗し、 I<errno> に "
2860 "B<EIDRM> が設定される。"
2861
2862 #. type: Plain text
2863 #: build/C/man2/semop.2:184
2864 msgid ""
2865 "The calling thread catches a signal: the value of I<semzcnt> is decremented "
2866 "and B<semop>()  fails, with I<errno> set to B<EINTR>."
2867 msgstr ""
2868 "呼び出し元スレッドがシグナルを捕獲した: このとき I<semzcnt> の値は 1 減算さ"
2869 "れ、 B<semop>()  は失敗し I<errno> に B<EINTR> が設定される。"
2870
2871 #. type: Plain text
2872 #: build/C/man2/semop.2:195
2873 msgid ""
2874 "The time limit specified by I<timeout> in a B<semtimedop>()  call expires: "
2875 "B<semop>()  fails, with I<errno> set to B<EAGAIN>."
2876 msgstr ""
2877 "B<semtimedop>()  の I<timeout> で指定された制限時間が経過した: このとき "
2878 "B<semtimedop>()  は失敗し、 I<errno> に B<EAGAIN> が設定される。"
2879
2880 #. type: Plain text
2881 #: build/C/man2/semop.2:237
2882 msgid ""
2883 "If I<sem_op> is less than zero, the process must have alter permission on "
2884 "the semaphore set.  If I<semval> is greater than or equal to the absolute "
2885 "value of I<sem_op>, the operation can proceed immediately: the absolute "
2886 "value of I<sem_op> is subtracted from I<semval>, and, if B<SEM_UNDO> is "
2887 "specified for this operation, the system adds the absolute value of "
2888 "I<sem_op> to the semaphore adjustment (I<semadj>)  value for this "
2889 "semaphore.  If the absolute value of I<sem_op> is greater than I<semval>, "
2890 "and B<IPC_NOWAIT> is specified in I<sem_flg>, B<semop>()  fails, with "
2891 "I<errno> set to B<EAGAIN> (and none of the operations in I<sops> is "
2892 "performed).  Otherwise I<semncnt> (the counter of threads waiting for this "
2893 "semaphore's value to increase)  is incremented by one and the thread sleeps "
2894 "until one of the following occurs:"
2895 msgstr ""
2896 "I<sem_op> が 0 未満の場合、プロセスにはそのセマフォ集合を変更する許可がなけれ"
2897 "ば ならない。 I<semval> が I<sem_op> の絶対値以上の場合は、操作は直ちに実行さ"
2898 "れる: I<semval> から I<sem_op> の絶対値を減算し、さらに、この操作に "
2899 "B<SEM_UNDO> が指定されている場合は、このセマフォの調整値 (I<semadj>) に "
2900 "I<sem_op> の絶対値を加算する。 I<semval> が I<sem_op> の絶対値より小さく、 "
2901 "I<sem_flg> に B<IPC_NOWAIT> が指定された場合は、 B<semop>()  は失敗し、 "
2902 "I<errno> に B<EAGAIN> が設定される (このとき I<sops> の操作は全く実行されな"
2903 "い)。 I<semval> が I<sem_op> の絶対値より小さく、 B<IPC_WAIT> が指定されてい"
2904 "ない場合は、 I<semncnt> (このセマフォの値が増加するのを待っているスレッド数の"
2905 "カウンタ)  を 1 増加させて、以下のいずれかが起こるまでスレッドを停止 (sleep) "
2906 "する。"
2907
2908 #. type: Plain text
2909 #: build/C/man2/semop.2:242
2910 msgid ""
2911 "I<semval> becomes greater than or equal to the absolute value of I<sem_op>: "
2912 "the operation now proceeds, as described above."
2913 msgstr ""
2914 "I<semval> が I<sem_op> の絶対値以上になった。この時点で、操作は上述の通り実行"
2915 "される。"
2916
2917 #. type: Plain text
2918 #: build/C/man2/semop.2:249
2919 msgid ""
2920 "The semaphore set is removed from the system: B<semop>()  fails, with "
2921 "I<errno> set to B<EIDRM>."
2922 msgstr ""
2923 "セマフォ集合がシステムから削除された: このとき B<semop>()  は失敗し I<errno> "
2924 "に B<EIDRM> が設定される。"
2925
2926 #. type: Plain text
2927 #: build/C/man2/semop.2:259
2928 msgid ""
2929 "The calling thread catches a signal: the value of I<semncnt> is decremented "
2930 "and B<semop>()  fails, with I<errno> set to B<EINTR>."
2931 msgstr ""
2932 "呼び出したスレッドがシグナルを捕獲した: このとき I<semncnt> が 1 減算され、 "
2933 "B<semop>()  は失敗し I<errno> に B<EINTR> が設定される。"
2934
2935 #. type: Plain text
2936 #: build/C/man2/semop.2:268
2937 msgid ""
2938 "The time limit specified by I<timeout> in a B<semtimedop>()  call expires: "
2939 "the system call fails, with I<errno> set to B<EAGAIN>."
2940 msgstr ""
2941 "B<semtimedop>()  の I<timeout> で指定された制限時間が経過した: このとき "
2942 "B<semtimedop>()  は失敗し、 I<errno> に B<EAGAIN> が設定される。"
2943
2944 #.  and
2945 #.  .I sem_ctime
2946 #. type: Plain text
2947 #: build/C/man2/semop.2:279
2948 msgid ""
2949 "On successful completion, the I<sempid> value for each semaphore specified "
2950 "in the array pointed to by I<sops> is set to the caller's process ID.  In "
2951 "addition, the I<sem_otime> is set to the current time."
2952 msgstr ""
2953 "操作が成功した場合、 I<sops> が指す配列によって操作対象となった各セマフォの "
2954 "I<sempid> メンバーには呼び出し元のプロセス ID が設定される。さらに "
2955 "I<sem_otime> に現在時刻が設定される。"
2956
2957 #. type: Plain text
2958 #: build/C/man2/semop.2:309
2959 msgid ""
2960 "B<semtimedop>()  behaves identically to B<semop>()  except that in those "
2961 "cases where the calling thread would sleep, the duration of that sleep is "
2962 "limited by the amount of elapsed time specified by the I<timespec> structure "
2963 "whose address is passed in the I<timeout> argument.  (This sleep interval "
2964 "will be rounded up to the system clock granularity, and kernel scheduling "
2965 "delays mean that the interval may overrun by a small amount.)  If the "
2966 "specified time limit has been reached, B<semtimedop>()  fails with I<errno> "
2967 "set to B<EAGAIN> (and none of the operations in I<sops> is performed).  If "
2968 "the I<timeout> argument is NULL, then B<semtimedop>()  behaves exactly like "
2969 "B<semop>()."
2970 msgstr ""
2971 "B<semtimedop>() 関数の振る舞いは B<semop>() と全く同じだが、呼び出し元\n"
2972 "スレッドが停止する場合、停止期間の上限が I<timeout> 引き数の指す\n"
2973 "I<timespec> 構造体で指定された時間となる点だけが異なる (この停止期間は\n"
2974 "システムクロックの粒度に切り上げられ、カーネルのスケジューリング遅延に\n"
2975 "より、この停止期間は少しだけ長くなる可能性がある)。\n"
2976 "指定した制限時間に達した場合は、 B<semtimedop>() は失敗し、 I<errno> に\n"
2977 "B<EAGAIN> が設定される (このとき I<sops> の操作は実行されない)。\n"
2978 "I<timeout> 引き数が NULL の場合、 B<semtimedop>() 関数の振る舞いは\n"
2979 "B<semop>() 関数と全く同じになる。"
2980
2981 #. type: Plain text
2982 #: build/C/man2/semop.2:319
2983 msgid ""
2984 "If successful B<semop>()  and B<semtimedop>()  return 0; otherwise they "
2985 "return -1 with I<errno> indicating the error."
2986 msgstr ""
2987 "成功した場合、 B<semop>()  と B<semtimedop>()  は 0 を返す。そうでなければ "
2988 "-1 を返し、 エラーを示す I<errno> を設定する。"
2989
2990 #. type: Plain text
2991 #: build/C/man2/semop.2:323
2992 msgid "On failure, I<errno> is set to one of the following:"
2993 msgstr "失敗した場合、 I<errno> に以下のどれかが設定される:"
2994
2995 #. type: TP
2996 #: build/C/man2/semop.2:323
2997 #, no-wrap
2998 msgid "B<E2BIG>"
2999 msgstr "B<E2BIG>"
3000
3001 #. type: Plain text
3002 #: build/C/man2/semop.2:331
3003 msgid ""
3004 "The argument I<nsops> is greater than B<SEMOPM>, the maximum number of "
3005 "operations allowed per system call."
3006 msgstr ""
3007 "I<nsops> 引き数が B<SEMOPM> より大きい。 B<SEMOPM> は一回のシステムコールで許"
3008 "される操作の最大個数である。"
3009
3010 #. type: Plain text
3011 #: build/C/man2/semop.2:338
3012 msgid ""
3013 "The calling process does not have the permissions required to perform the "
3014 "specified semaphore operations, and does not have the B<CAP_IPC_OWNER> "
3015 "capability."
3016 msgstr ""
3017 "呼び出し元プロセスには指定されたセマフォ操作を行うのに 必要なアクセス許可がな"
3018 "く、 B<CAP_IPC_OWNER> ケーパビリティもない。"
3019
3020 #. type: Plain text
3021 #: build/C/man2/semop.2:347
3022 msgid ""
3023 "An operation could not proceed immediately and either B<IPC_NOWAIT> was "
3024 "specified in I<sem_flg> or the time limit specified in I<timeout> expired."
3025 msgstr ""
3026 "操作を直ちに処理することができず、かつ I<sem_flg> に B<IPC_NOWAIT> が指定され"
3027 "ているか I<timeout> で指定された制限時間が経過した。"
3028
3029 #. type: Plain text
3030 #: build/C/man2/semop.2:354
3031 msgid ""
3032 "An address specified in either the I<sops> or the I<timeout> argument isn't "
3033 "accessible."
3034 msgstr "引き数 I<sops> か I<timeout> が指しているアドレスにアクセスできない。"
3035
3036 #. type: TP
3037 #: build/C/man2/semop.2:354
3038 #, no-wrap
3039 msgid "B<EFBIG>"
3040 msgstr "B<EFBIG>"
3041
3042 #. type: Plain text
3043 #: build/C/man2/semop.2:360
3044 msgid ""
3045 "For some operation the value of I<sem_num> is less than 0 or greater than or "
3046 "equal to the number of semaphores in the set."
3047 msgstr ""
3048 "ある操作で、 I<sem_num> の値が 0 未満か、集合内のセマフォの数以上である。"
3049
3050 #. type: Plain text
3051 #: build/C/man2/semop.2:367
3052 msgid ""
3053 "While blocked in this system call, the thread caught a signal; see B<signal>"
3054 "(7)."
3055 msgstr ""
3056 "このシステムコールで停止している時にスレッドがシグナルを捕獲した。 B<single>"
3057 "(7) 参照。"
3058
3059 #. type: Plain text
3060 #: build/C/man2/semop.2:374
3061 msgid ""
3062 "The semaphore set doesn't exist, or I<semid> is less than zero, or I<nsops> "
3063 "has a nonpositive value."
3064 msgstr ""
3065 "セマフォ集合が存在しないか、 I<semid> が 0 未満であるか、 I<nsops> が正の数で"
3066 "ない。"
3067
3068 #. type: Plain text
3069 #: build/C/man2/semop.2:382
3070 msgid ""
3071 "The I<sem_flg> of some operation specified B<SEM_UNDO> and the system does "
3072 "not have enough memory to allocate the undo structure."
3073 msgstr ""
3074 "ある操作で I<sem_flg> に B<SEM_UNDO> が指定されたが、システムにアンドゥ構造体"
3075 "に割り当てる十分なメモリがない。"
3076
3077 #. type: Plain text
3078 #: build/C/man2/semop.2:390
3079 msgid ""
3080 "For some operation I<sem_op+semval> is greater than B<SEMVMX>, the "
3081 "implementation dependent maximum value for I<semval>."
3082 msgstr ""
3083 "ある操作で I<sem_op+semval> が B<SEMVMX> より大きい。 B<SEMVMX> は I<semval> "
3084 "の最大値で、その値は実装依存である。"
3085
3086 #. type: SH
3087 #: build/C/man2/semop.2:390
3088 #, no-wrap
3089 msgid "VERSIONS"
3090 msgstr "バージョン"
3091
3092 #. type: Plain text
3093 #: build/C/man2/semop.2:397
3094 msgid ""
3095 "B<semtimedop>()  first appeared in Linux 2.5.52, and was subsequently "
3096 "backported into kernel 2.4.22.  Glibc support for B<semtimedop>()  first "
3097 "appeared in version 2.3.3."
3098 msgstr ""
3099 "B<semtimedop>()  は Linux 2.5.52 で初めて登場し、 それからカーネル 2.4.22 に"
3100 "も移植された。 B<semtimedop>()  の glibc でのサポートはバージョン 2.3.3 で初"
3101 "めて登場した。"
3102
3103 #. type: Plain text
3104 #: build/C/man2/semop.2:421
3105 msgid ""
3106 "The I<sem_undo> structures of a process aren't inherited by the child "
3107 "produced by B<fork>(2), but they are inherited across an B<execve>(2)  "
3108 "system call."
3109 msgstr ""
3110 "あるプロセスの I<sem_undo> 構造体は B<fork>(2)  で生成された子プロセスには継"
3111 "承されないが、 B<execve>(2)  システムコールの場合は継承される。"
3112
3113 #. type: Plain text
3114 #: build/C/man2/semop.2:427
3115 msgid ""
3116 "B<semop>()  is never automatically restarted after being interrupted by a "
3117 "signal handler, regardless of the setting of the B<SA_RESTART> flag when "
3118 "establishing a signal handler."
3119 msgstr ""
3120 "B<semop>()  はシグナルハンドラによって中断された後に、 決して自動的に再開する"
3121 "ことはない。 たとえシグナルハンドラの設定時に B<SA_RESTART> フラグがセットさ"
3122 "れていても再開することはない"
3123
3124 #. type: Plain text
3125 #: build/C/man2/semop.2:452
3126 msgid ""
3127 "A semaphore adjustment (I<semadj>)  value is a per-process, per-semaphore "
3128 "integer that is the negated sum of all operations performed on a semaphore "
3129 "specifying the B<SEM_UNDO> flag.  Each process has a list of I<semadj> values"
3130 "\\(emone value for each semaphore on which it has operated using "
3131 "B<SEM_UNDO>.  When a process terminates, each of its per-semaphore I<semadj> "
3132 "values is added to the corresponding semaphore, thus undoing the effect of "
3133 "that process's operations on the semaphore (but see BUGS below).  When a "
3134 "semaphore's value is directly set using the B<SETVAL> or B<SETALL> request "
3135 "to B<semctl>(2), the corresponding I<semadj> values in all processes are "
3136 "cleared."
3137 msgstr ""
3138 "セマフォの調整値 (I<semadj>) は、プロセス毎のセマフォ毎の整数で、 "
3139 "B<SEM_UNDO> フラグを指定して行われた、セマフォに対するすべての操作の合計値を"
3140 "反転したものである。 各プロセスは I<semadj> の値のリストを保持する \\(em リス"
3141 "トのそれぞれの値は B<SEM_UNDO> を使って操作が行われた個々のセマフォに対応す"
3142 "る。 プロセスが終了する際、 セマフォ毎の I<semadj> の各々の値が対応するセマ"
3143 "フォに加算される。 これにより、そのプロセスがそのセマフォに対して行った操作の"
3144 "影響が取り消される (ただし、下記の「バグ」を参照)。 B<semctl>(2) の "
3145 "B<SETVAL> や B<SETALL> を使ってセマフォの値が直接設定された場合、 すべてのプ"
3146 "ロセスの対応する I<semadj> の値がクリアされる。"
3147
3148 #. type: Plain text
3149 #: build/C/man2/semop.2:457
3150 msgid ""
3151 "The I<semval>, I<sempid>, I<semzcnt>, and I<semnct> values for a semaphore "
3152 "can all be retrieved using appropriate B<semctl>(2)  calls."
3153 msgstr ""
3154 "あるセマフォの I<semval>, I<sempid>, I<semzcnt>, I<semnct> の値はいずれも、適"
3155 "切な操作を指定して B<semctl>(2)  を呼び出すことで取得できる。"
3156
3157 #. type: Plain text
3158 #: build/C/man2/semop.2:461
3159 msgid ""
3160 "The following limits on semaphore set resources affect the B<semop>()  call:"
3161 msgstr ""
3162 "セマフォ集合のリソースに関する制限のうち、 B<semop>()  に影響を及ぼすものを以"
3163 "下に挙げる:"
3164
3165 #. type: TP
3166 #: build/C/man2/semop.2:461
3167 #, no-wrap
3168 msgid "B<SEMOPM>"
3169 msgstr "B<SEMOPM>"
3170
3171 #.  This /proc file is not available in Linux 2.2 and earlier -- MTK
3172 #. type: Plain text
3173 #: build/C/man2/semop.2:469
3174 msgid ""
3175 "Maximum number of operations allowed for one B<semop>()  call (32)  (on "
3176 "Linux, this limit can be read and modified via the third field of I</proc/"
3177 "sys/kernel/sem>)."
3178 msgstr ""
3179 "一回の B<semop>()  で許される操作の最大数 (32)。 (Linux では、この制限値は "
3180 "I</proc/sys/kernel/sem> の第3フィールドに対応し、読み出しも変更もできる)。"
3181
3182 #. type: Plain text
3183 #: build/C/man2/semop.2:474
3184 msgid ""
3185 "Maximum allowable value for I<semval>: implementation dependent (32767)."
3186 msgstr "I<semval> が取り得る最大値: 実装依存 (32767)。"
3187
3188 #. type: Plain text
3189 #: build/C/man2/semop.2:481
3190 msgid ""
3191 "The implementation has no intrinsic limits for the adjust on exit maximum "
3192 "value (B<SEMAEM>), the system wide maximum number of undo structures "
3193 "(B<SEMMNU>)  and the per-process maximum number of undo entries system "
3194 "parameters."
3195 msgstr ""
3196 "以下の値に関しては実装依存の制限はない。 終了時の調整 (adjust on exit) の最大"
3197 "値 (B<SEMAEM>)、 システム全体のアンドゥ構造体の最大数 (B<SEMMNU>)、 プロセス"
3198 "あたりのアンドゥ構造体の最大数。"
3199
3200 #. type: Plain text
3201 #: build/C/man2/semop.2:502
3202 msgid ""
3203 "When a process terminates, its set of associated I<semadj> structures is "
3204 "used to undo the effect of all of the semaphore operations it performed with "
3205 "the B<SEM_UNDO> flag.  This raises a difficulty: if one (or more) of these "
3206 "semaphore adjustments would result in an attempt to decrease a semaphore's "
3207 "value below zero, what should an implementation do? One possible approach "
3208 "would be to block until all the semaphore adjustments could be performed.  "
3209 "This is however undesirable since it could force process termination to "
3210 "block for arbitrarily long periods.  Another possibility is that such "
3211 "semaphore adjustments could be ignored altogether (somewhat analogously to "
3212 "failing when B<IPC_NOWAIT> is specified for a semaphore operation).  Linux "
3213 "adopts a third approach: decreasing the semaphore value as far as possible "
3214 "(i.e., to zero) and allowing process termination to proceed immediately."
3215 msgstr ""
3216 "プロセスが終了する際、プロセスに対応する I<semadj> の集合を使って、 "
3217 "B<SEM_UNDO> フラグ付きで実行された全てのセマフォ操作の影響を取り消す。 これに"
3218 "よりある問題が発生する: これらのセマフォの調整を行っていると、 中にはセマフォ"
3219 "の値が 0 未満の値にしようとする場合が出てくる。 このような場合、どのように実"
3220 "装するべきか? ひとつの考えられる手法は、全てのセマフォ調整が実行されるまで 停"
3221 "止することである。しかし、この方法ではプロセスの終了が 長時間にわたって停止さ"
3222 "れることがあるので望ましくない。 しかもどれくらい長時間になるかは分からな"
3223 "い。 別の選択肢として、このようなセマフォ調整を完全に無視してしまう方法があ"
3224 "る (これはセマフォ操作として B<IPC_NOWAIT> が指定するのと少し似ている)。 "
3225 "Linux は第三の手法を採用している: セマフォの値を出来るだけ (つまり 0 まで) 減"
3226 "少させて、プロセスの終了を直ちに続行できるようにしている。"
3227
3228 #.  The bug report:
3229 #.  http://marc.theaimsgroup.com/?l=linux-kernel&m=110260821123863&w=2
3230 #.  the fix:
3231 #.  http://marc.theaimsgroup.com/?l=linux-kernel&m=110261701025794&w=2
3232 #. type: Plain text
3233 #: build/C/man2/semop.2:511
3234 msgid ""
3235 "In kernels 2.6.x, x E<lt>= 10, there is a bug that in some circumstances "
3236 "prevents a thread that is waiting for a semaphore value to become zero from "
3237 "being woken up when the value does actually become zero.  This bug is fixed "
3238 "in kernel 2.6.11."
3239 msgstr ""
3240 "カーネル 2.6.x (x E<lt>= 10) には、ある状況においてセマフォ値が 0 になるのを "
3241 "待っているスレッドが、セマフォ値が実際に 0 になったときに起床 (wake up)  され"
3242 "ない、というバグがある。このバグはカーネル 2.6.11 で修正されている。"
3243
3244 #. type: Plain text
3245 #: build/C/man2/semop.2:516
3246 msgid ""
3247 "The following code segment uses B<semop>()  to atomically wait for the value "
3248 "of semaphore 0 to become zero, and then increment the semaphore value by one."
3249 msgstr ""
3250 "以下の部分的なコードは、 セマフォ 0 の値が 0 になるのを待ってから、 セマフォ"
3251 "の値を 1 加算する処理を、 B<semop>()  を使ってアトミック (atomically) に行"
3252 "う。"
3253
3254 #. type: Plain text
3255 #: build/C/man2/semop.2:520
3256 #, no-wrap
3257 msgid ""
3258 "    struct sembuf sops[2];\n"
3259 "    int semid;\n"
3260 msgstr ""
3261 "    struct sembuf sops[2];\n"
3262 "    int semid;\n"
3263
3264 #. type: Plain text
3265 #: build/C/man2/semop.2:522
3266 #, no-wrap
3267 msgid "    /* Code to set I<semid> omitted */\n"
3268 msgstr "    /* Code to set I<semid> omitted */\n"
3269
3270 #. type: Plain text
3271 #: build/C/man2/semop.2:526
3272 #, no-wrap
3273 msgid ""
3274 "    sops[0].sem_num = 0;        /* Operate on semaphore 0 */\n"
3275 "    sops[0].sem_op = 0;         /* Wait for value to equal 0 */\n"
3276 "    sops[0].sem_flg = 0;\n"
3277 msgstr ""
3278 "    sops[0].sem_num = 0;        /* Operate on semaphore 0 */\n"
3279 "    sops[0].sem_op = 0;         /* Wait for value to equal 0 */\n"
3280 "    sops[0].sem_flg = 0;\n"
3281
3282 #. type: Plain text
3283 #: build/C/man2/semop.2:530
3284 #, no-wrap
3285 msgid ""
3286 "    sops[1].sem_num = 0;        /* Operate on semaphore 0 */\n"
3287 "    sops[1].sem_op = 1;         /* Increment value by one */\n"
3288 "    sops[1].sem_flg = 0;\n"
3289 msgstr ""
3290 "    sops[1].sem_num = 0;        /* Operate on semaphore 0 */\n"
3291 "    sops[1].sem_op = 1;         /* Increment value by one */\n"
3292 "    sops[1].sem_flg = 0;\n"
3293
3294 #. type: Plain text
3295 #: build/C/man2/semop.2:535
3296 #, no-wrap
3297 msgid ""
3298 "    if (semop(semid, sops, 2) == -1) {\n"
3299 "        perror(\"semop\");\n"
3300 "        exit(EXIT_FAILURE);\n"
3301 "    }\n"
3302 msgstr ""
3303 "    if (semop(semid, sops, 2) == -1) {\n"
3304 "        perror(\"semop\");\n"
3305 "        exit(EXIT_FAILURE);\n"
3306 "    }\n"
3307
3308 #. type: Plain text
3309 #: build/C/man2/semop.2:545
3310 msgid ""
3311 "B<clone>(2), B<semctl>(2), B<semget>(2), B<sigaction>(2), B<capabilities>"
3312 "(7), B<sem_overview>(7), B<svipc>(7), B<time>(7)"
3313 msgstr ""
3314 "B<clone>(2), B<semctl>(2), B<semget>(2), B<sigaction>(2), B<capabilities>"
3315 "(7), B<sem_overview>(7), B<svipc>(7), B<time>(7)"
3316
3317 #~ msgid ""
3318 #~ "I<semval> becomes greater than or equal to the absolute value of "
3319 #~ "I<sem_op>, at which time the value of I<semncnt> is decremented, the "
3320 #~ "absolute value of I<sem_op> is subtracted from I<semval> and, if "
3321 #~ "B<SEM_UNDO> is specified for this operation, the system updates the undo "
3322 #~ "count (I<semadj>)  for this semaphore."
3323 #~ msgstr ""
3324 #~ "I<semval> が I<sem_op> の絶対値以上になった: このとき I<semncnt> が 1 減算"
3325 #~ "され、 I<semval> から I<sem_op> の絶対値が引かれる。 この操作に "
3326 #~ "B<SEM_UNDO> が指定されていた場合にはこのセマフォのアンドゥ数 (I<semadj>)  "
3327 #~ "も更新する。"
3328
3329 #~ msgid ""
3330 #~ "I<semadj> is a per-process integer which is simply the (negative) count "
3331 #~ "of all semaphore operations performed specifying the B<SEM_UNDO> flag.  "
3332 #~ "When a semaphore's value is directly set using the B<SETVAL> or B<SETALL> "
3333 #~ "request to B<semctl>(2), the corresponding I<semadj> values in all "
3334 #~ "processes are cleared."
3335 #~ msgstr ""
3336 #~ "I<semadj> はプロセスごとの整数で、 B<SEM_UNDO> フラグを設定して実行された"
3337 #~ "全てのセマフォ操作の(負数の)カウンタである。 B<semctl>(2)  に B<SETVAL> ま"
3338 #~ "たは B<SETALL> を指定し、セマフォの値が 直接設定された場合には、全てのプロ"
3339 #~ "セスにおいて対応する I<semadj> の値がクリアされる。"