OSDN Git Service

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