OSDN Git Service

068ceb5eceee7307c8c3ebafcf2c571cef7a1cb1
[linuxjm/LDP_man-pages.git] / release / man2 / semop.2
1 .\" Copyright 1993 Giorgio Ciucci (giorgio@crcc.it)
2 .\"
3 .\" Permission is granted to make and distribute verbatim copies of this
4 .\" manual provided the copyright notice and this permission notice are
5 .\" preserved on all copies.
6 .\"
7 .\" Permission is granted to copy and distribute modified versions of this
8 .\" manual under the conditions for verbatim copying, provided that the
9 .\" entire resulting derived work is distributed under the terms of a
10 .\" permission notice identical to this one.
11 .\"
12 .\" Since the Linux kernel and libraries are constantly changing, this
13 .\" manual page may be incorrect or out-of-date.  The author(s) assume no
14 .\" responsibility for errors or omissions, or for damages resulting from
15 .\" the use of the information contained herein.  The author(s) may not
16 .\" have taken the same level of care in the production of this manual,
17 .\" which is licensed free of charge, as they might when working
18 .\" professionally.
19 .\"
20 .\" Formatted or processed versions of this manual, if unaccompanied by
21 .\" the source, must acknowledge the copyright and authors of this work.
22 .\"
23 .\" Modified 1996-10-22, Eric S. Raymond <esr@thyrsus.com>
24 .\" Modified 2002-01-08, Michael Kerrisk <mtk.manpages@gmail.com>
25 .\" Modified 2003-04-28, Ernie Petrides <petrides@redhat.com>
26 .\" Modified 2004-05-27, Michael Kerrisk <mtk.manpages@gmail.com>
27 .\" Modified, 11 Nov 2004, Michael Kerrisk <mtk.manpages@gmail.com>
28 .\"     Language and formatting clean-ups
29 .\"     Added notes on /proc files
30 .\" 2005-04-08, mtk, Noted kernel version numbers for semtimedop()
31 .\" 2007-07-09, mtk, Added an EXAMPLE code segment.
32 .\"
33 .\" Japanese Version Copyright (c) 1997 HANATAKA Shinya
34 .\"         all rights reserved.
35 .\" Translated 1997-02-23, HANATAKA Shinya <hanataka@abyss.rim.or.jp>
36 .\" Updated 2003-02-09, Kentaro Shirakata <argrath@ub32.org>
37 .\" Updated 2003-09-12, Kentaro Shirakata <argrath@ub32.org>
38 .\" Updated 2005-03-01, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
39 .\" Updated 2005-04-17, Akihiro MOTOKI
40 .\" Updated 2005-09-06, Akihiro MOTOKI
41 .\" Updated 2007-05-01, Akihiro MOTOKI, LDP v2.46
42 .\"
43 .\"WORD:        semaphore               ¥»¥Þ¥Õ¥©
44 .\"WORD:        member                  ¥á¥ó¥Ð¡¼
45 .\"WORD:        process                 ¥×¥í¥»¥¹
46 .\"WORD:        system call             ¥·¥¹¥Æ¥à¥³¡¼¥ë
47 .\"WORD:        undo                    ¥¢¥ó¥É¥¥
48 .\"WORD:        signal                  ¥·¥°¥Ê¥ë
49 .\"WORD:        catch                   Êá³Í(catch)
50 .\"WORD:        process-ID              ¥×¥í¥»¥¹ID
51 .\"WORD:        policy                  Êý¿Ë
52 .\"WORD:        implement               ¼ÂÁõ
53 .\"WORD:        queue                   ¥­¥å¡¼
54 .\"WORD:        free                    ²òÊü(free).
55 .\"WORD:        memory                  ¥á¥â¥ê
56 .\"WORD:        anonymous structure     ÌµÌ¾¹½Â¤ÂÎ
57 .\"WORD:        time limit              À©¸Â»þ´Ö
58 \"
59 .TH SEMOP 2 2008-10-04 "Linux" "Linux Programmer's Manual"
60 .SH Ì¾Á°
61 semop, semtimedop \- ¥»¥Þ¥Õ¥©¤ÎÁàºî
62 .SH ½ñ¼°
63 .nf
64 .B #include <sys/types.h>
65 .B #include <sys/ipc.h>
66 .B #include <sys/sem.h>
67 .sp
68 .BI "int semop(int " semid ", struct sembuf *" sops ", unsigned " nsops );
69 .sp
70 .BI "int semtimedop(int " semid ", struct sembuf *" sops ", unsigned " nsops ,
71 .BI "               struct timespec *" timeout );
72 .fi
73 .sp
74 .in -4n
75 glibc ¸þ¤±¤Îµ¡Ç½¸¡ºº¥Þ¥¯¥í¤ÎÍ×·ï
76 .RB ( feature_test_macros (7)
77 »²¾È):
78 .in
79 .sp
80 .BR semtimedop ():
81 _GNU_SOURCE
82 .SH ÀâÌÀ
83 ¥»¥Þ¥Õ¥©½¸¹ç (semaphore set) ¤Î¥á¥ó¥Ð¡¼¤Î³Æ¥»¥Þ¥Õ¥©¤Ï
84 °Ê²¼¤Î´ØÏ¢¾ðÊó¤ò»ý¤Ã¤Æ¤¤¤ë:
85 .sp
86 .in +4n
87 .nf
88 unsigned short  semval;   /* ¥»¥Þ¥Õ¥©ÃÍ */
89 unsigned short  semzcnt;  /* ¥¼¥í¤òÂÔ¤Ä¥×¥í¥»¥¹¿ô */
90 unsigned short  semncnt;  /* Áý²Ã¤òÂÔ¤Ä¥×¥í¥»¥¹¿ô */
91 pid_t           sempid;   /* ºÇ¸å¤ËÁàºî¤ò¹Ô¤Ê¤Ã¤¿¥×¥í¥»¥¹ */
92 .sp
93 .in -4n
94 .fi
95 .BR semop ()
96 ¤Ï
97 .I semid
98 ¤Ç»ØÄꤵ¤ì¤¿¥»¥Þ¥Õ¥©½¸¹ç¤ÎÁªÂò¤µ¤ì¤¿¥»¥Þ¥Õ¥©¤ËÂФ·¤ÆÁàºî¤ò¹Ô¤¦¡£
99 .I sops
100 ¤Ï
101 .I nsops
102 ¸Ä¤ÎÍ×ÁǤÎÇÛÎó¤ò»Ø¤·¡¢ÇÛÎó¤Î³ÆÍ×ÁǤϸġ¹¤Î¥»¥Þ¥Õ¥©¤Ë
103 ÂФ¹¤ëÁàºî¤ò¼¨¤¹¡£¤½¤Î·¿¤Ï
104 .I struct sembuf
105 ¤Ç¡¢¼¡¤Î¥á¥ó¥Ð¤ò»ý¤Ä:
106 .sp
107 .in +4n
108 .nf
109 unsigned short sem_num;  /* ¥»¥Þ¥Õ¥©ÈÖ¹æ */
110 short          sem_op;   /* ¥»¥Þ¥Õ¥©Áàºî */
111 short          sem_flg;  /* Áàºî¥Õ¥é¥° */
112 .sp
113 .in -4n
114 .fi
115 .I sem_flg
116 ¤Ë¤Ï
117 .B IPC_NOWAIT
118 ¤È
119 .B SEM_UNDO
120 ¤¬ÀßÄê¤Ç¤­¤ë¡£
121 .B SEM_UNDO
122 ¤¬»ØÄꤵ¤ì¤¿Áàºî¤Ï¡¢¤½¤Î¥×¥í¥»¥¹¤¬½ªÎ»¤·¤¿»þ¤Ë¼«Æ°Åª¤Ë¼è¤ê¾Ã¤µ¤ì¤ë¡£
123 .PP
124 .I sops
125 ¤Ë´Þ¤Þ¤ì¤ëÁàºî¤Î½¸¹ç¤Ï¡¢
126 .I "ÇÛÎó¤Î½ç½ø"
127 ¤Ç¡¢
128 .I ¥¢¥È¥ß¥Ã¥¯¤Ë
129 ¼Â¹Ô¤µ¤ì¤ë¡£
130 ¤¹¤Ê¤ï¤Á¡¢Á´¤Æ¤ÎÁàºî¤¬´°Á´¤Ë¼Â¹Ô¤µ¤ì¤ë¤«¡¢Á´¤¯¼Â¹Ô¤µ¤ì¤Ê¤¤¤«¤Î
131 ¤É¤Á¤é¤«¤È¤Ê¤ë¡£
132
133 Á´¤Æ¤ÎÁàºî¤¬Ä¾¤Á¤Ë¼Â¹Ô¤Ç¤­¤Ê¤¤¾ì¹ç¤Î¤³¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤Î¿¶¤ëÉñ¤¤¤Ï
134 ¸Ä¡¹¤ÎÁàºî¤Î
135 .I sem_flg
136 ¥Õ¥£¡¼¥ë¥É¤Ë
137 .B IPC_NOWAIT
138 ¤¬Â¸ºß¤¹¤ë¤«¤Ë¤è¤Ã¤Æ·è¤Þ¤ê¡¢¸å½Ò¤Î¤è¤¦¤Ë¤Ê¤ë¡£
139
140 ¤½¤ì¤¾¤ì¤ÎÁàºî¤Ï¥»¥Þ¥Õ¥©½¸¹ç¤Î
141 .IR sem_num ÈÖÌÜ
142 ¤Î¥»¥Þ¥Õ¥©¤ËÂФ·¤Æ¼Â¹Ô¤µ¤ì¤ë¡£¥»¥Þ¥Õ¥©½¸¹ç¤ÎºÇ½é¤Î¥»¥Þ¥Õ¥©¤Ë¤Ï
143 ÈÖ¹æ 0 ¤¬¿¶¤é¤ì¤ë¡£
144 ¤½¤·¤ÆÁàºî¤Ï»°¼ïÎढ¤ê¡¢
145 .I sem_op
146 ¤ÎÃͤǶèÊ̤µ¤ì¤ë¡£
147 .PP
148 .I sem_op
149 ¤¬Àµ¤ÎÀ°¿ô¤Î¾ì¹ç¡¢Áàºî¤È¤·¤Æ¤½¤ÎÃͤò¥»¥Þ¥Õ¥©¤ÎÃÍ
150 .RI ( semval )
151 ¤Ë²Ã¤¨¤ë¡£¤µ¤é¤Ë¤³¤ÎÁàºî¤Ë
152 .B SEM_UNDO
153 ¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¥·¥¹¥Æ¥à¤Ï¤³¤Î¥»¥Þ¥Õ¥©¤Î ¥×¥í¥»¥¹¡¦¥¢¥ó¥É¥¥¿ô
154 .RI ( semadj )
155 ¤ò¹¹¿·¤¹¤ë¡£
156 ¤³¤ÎÁàºî¤Ïɬ¤º¼Â¹Ô¤Ç¤­¡¢¥×¥í¥»¥¹¤ÎÄä»ß¤Ïµ¯¤³¤é¤Ê¤¤¡£
157 ¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤ÏÂоݤΥ»¥Þ¥Õ¥©½¸¹ç¤òÊѹ¹¤¹¤ëµö²Ä¤¬¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
158 .PP
159 .I sem_op
160 ¤¬ 0 ¤Î¾ì¹ç¡¢¡Ö¥¼¥í¤Þ¤ÇÂԤġ×Áàºî¤Ç¤¢¤ë¡£¤³¤Î¾ì¹ç¡¢¥×¥í¥»¥¹¤Ï
161 ¤½¤Î¥»¥Þ¥Õ¥©½¸¹ç¤ËÂФ¹¤ëÆɤ߹þ¤ßµö²Ä¤¬¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
162 .I semval
163 ¤¬ 0 ¤Ê¤é¤Ð¡¢Áàºî¤Ïľ¤Á¤Ë¹Ô¤ï¤ì¤ë¡£
164 .I semval
165 ¤¬ 0 ¤Ç¤Ê¤¤¾ì¹ç¡¢
166 .I sem_flg
167 ¤Ë
168 .B IPC_NOWAIT
169 ¤¬»ØÄꤵ¤ì¤Æ¤¤¤ì¤Ð¡¢
170 .BR semop ()
171 ¤Ï¼ºÇÔ¤·¡¢
172 .B errno
173 ¤Ë
174 .B EAGAIN
175 ¤¬ÀßÄꤵ¤ì¤ë (¤³¤Î¤È¤­
176 .I sops
177 ¤ËÂФ¹¤ëÁàºî¤ÏÁ´¤¯¼Â¹Ô¤µ¤ì¤Ê¤¤)¡£
178 .I sem_flg
179 ¤Ë
180 .B IPC_NOWAIT
181 ¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢
182 .I semzcnt
183 (¥»¥Þ¥Õ¥©Ãͤ¬ 0 ¤Ë¤Ê¤ë¤Î¤òÂԤäƤ¤¤ë¥×¥í¥»¥¹¤Î¿ô) ¤ò 1 Áý²Ã¤µ¤»¤Æ¡¢
184 °Ê²¼¤Î¤¤¤º¤ì¤«¤¬µ¯¤³¤ë¤Þ¤Ç¥×¥í¥»¥¹¤òÄä»ß (sleep) ¤¹¤ë¡£
185 .IP \(bu 3
186 .I semval
187 ¤¬ 0 ¤Ë¤Ê¤Ã¤¿: ¤³¤Î¤È¤­
188 .I semval
189 ¤ÎÃͤϠ1 ¸º»»¤µ¤ì¤ë¡£
190 .IP \(bu
191 ¥»¥Þ¥Õ¥©½¸¹ç¤¬ºï½ü¤µ¤ì¤¿: ¤³¤Î¤È¤­
192 .BR semop ()
193 ¤Ï¼ºÇÔ¤·¡¢
194 .I errno
195 ¤Ë
196 .B EIDRM
197 ¤¬ÀßÄꤵ¤ì¤ë¡£
198 .IP \(bu
199 ¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤¬¥·¥°¥Ê¥ë¤òÊá³Í¤·¤¿: ¤³¤Î¤È¤­
200 .I semzcnt
201 ¤ÎÃͤϠ1 ¸º»»¤µ¤ì¡¢
202 .BR semop ()
203 ¤Ï¼ºÇÔ¤·
204 .I errno
205 ¤Ë
206 .B EINTR
207 ¤¬ÀßÄꤵ¤ì¤ë¡£
208 .IP \(bu
209 .\" motoki: semop () ¤Ï semtimedop () ¤Î´Ö°ã¤¤¡©
210 .BR semtimedop ()
211 ¤Î
212 .I timeout
213 ¤Ç»ØÄꤵ¤ì¤¿À©¸Â»þ´Ö¤¬·Ð²á¤·¤¿: ¤³¤Î¤È¤­
214 .BR semtimedop ()
215 ¤Ï¼ºÇÔ¤·¡¢
216 .I errno
217 ¤Ë
218 .B EAGAIN
219 ¤¬ÀßÄꤵ¤ì¤ë¡£
220 .PP
221 .I sem_op
222 ¤¬ 0 Ì¤Ëþ¤Î¾ì¹ç¡¢¥×¥í¥»¥¹¤Ë¤Ï¤½¤Î¥»¥Þ¥Õ¥©½¸¹ç¤òÊѹ¹¤¹¤ëµö²Ä¤¬¤Ê¤±¤ì¤Ð
223 ¤Ê¤é¤Ê¤¤¡£
224 .I semval
225 ¤¬
226 .I sem_op
227 ¤ÎÀäÂÐÃͰʾå¤Î¾ì¹ç¤Ï¡¢Áàºî¤Ïľ¤Á¤Ë¼Â¹Ô¤µ¤ì¤ë:
228 .I semval
229 ¤«¤é
230 .I sem_op
231 ¤ÎÀäÂÐÃͤ¬¸º»»¤µ¤ì¤ë¡£
232 ¤µ¤é¤Ë¡¢¤³¤ÎÁàºî¤Ë
233 .B SEM_UNDO
234 ¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¤³¤Î¥»¥Þ¥Õ¥©¤Î¥×¥í¥»¥¹¡¦¥¢¥ó¥É¥¥¿ô
235 .RI ( semadj )
236 ¤ò¹¹¿·¤¹¤ë¡£
237 .I semval
238 ¤¬
239 .I sem_op
240 ¤ÎÀäÂÐÃͤè¤ê¾®¤µ¤¯¡¢
241 .I sem_flg
242 ¤Ë
243 .B IPC_NOWAIT
244 ¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¤Ï¡¢
245 .BR semop ()
246 ¤Ï¼ºÇÔ¤·¡¢
247 .I errno
248 ¤Ë
249 .B EAGAIN
250 ¤¬ÀßÄꤵ¤ì¤ë (¤³¤Î¤È¤­
251 .I sops
252 ¤ÎÁàºî¤ÏÁ´¤¯¼Â¹Ô¤µ¤ì¤Ê¤¤)¡£
253 .B IPC_WAIT
254 ¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢
255 .I semncnt
256 (¤³¤Î¥»¥Þ¥Õ¥©¤ÎÃͤ¬Áý²Ã¤¹¤ë¤Î¤òÂԤäƤ¤¤ë¥×¥í¥»¥¹¿ô¤Î¥«¥¦¥ó¥¿)
257 ¤ò 1 Áý²Ã¤µ¤»¤Æ¡¢°Ê²¼¤Î¤¤¤º¤ì¤«¤¬µ¯¤³¤ë¤Þ¤Ç¥×¥í¥»¥¹¤òÄä»ß (sleep) ¤¹¤ë¡£
258 .IP \(bu 3
259 .I semval
260 ¤¬
261 .I sem_op
262 ¤ÎÀäÂÐÃͰʾå¤Ë¤Ê¤Ã¤¿: ¤³¤Î¤È¤­
263 .I semncnt
264 ¤¬ 1 ¸º»»¤µ¤ì¡¢
265 .I semval
266 ¤«¤é
267 .I sem_op
268 ¤ÎÀäÂÐÃͤ¬°ú¤«¤ì¤ë¡£
269 ¤³¤ÎÁàºî¤Ë
270 .B SEM_UNDO
271 ¤¬»ØÄꤵ¤ì¤Æ¤¤¤¿¾ì¹ç¤Ë¤Ï¤³¤Î¥»¥Þ¥Õ¥©¤Î¥×¥í¥»¥¹¡¦¥¢¥ó¥É¥¥¿ô
272 .RI ( semadj )
273 ¤â¹¹¿·¤¹¤ë¡£
274 .IP \(bu
275 ¥»¥Þ¥Õ¥©½¸¹ç¤¬¥·¥¹¥Æ¥à¤«¤éºï½ü¤µ¤ì¤¿: ¤³¤Î¤È¤­
276 .BR semop ()
277 ¤Ï¼ºÇÔ¤·
278 .I errno
279 ¤Ë
280 .B EIDRM
281 ¤¬ÀßÄꤵ¤ì¤ë¡£
282 .IP \(bu
283 ¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤¬¥·¥°¥Ê¥ë¤òÊá³Í¤·¤¿: ¤³¤Î¤È¤­
284 .I semncnt
285 ¤¬ 1 ¸º»»¤µ¤ì¡¢
286 .BR semop ()
287 ¤Ï¼ºÇÔ¤·
288 .I errno
289 ¤Ë
290 .B EINTR
291 ¤¬ÀßÄꤵ¤ì¤ë¡£
292 .IP \(bu
293 .\" motoki: the system call ¤Ï semtimedop () ¤Î¤³¤È¡©
294 .BR semtimedop ()
295 ¤Î
296 .I timeout
297 ¤Ç»ØÄꤵ¤ì¤¿À©¸Â»þ´Ö¤¬·Ð²á¤·¤¿: ¤³¤Î¤È¤­
298 .BR semtimedop ()
299 ¤Ï¼ºÇÔ¤·¡¢
300 .I errno
301 ¤Ë
302 .B EAGAIN
303 ¤¬ÀßÄꤵ¤ì¤ë¡£
304 .PP
305 Áàºî¤¬À®¸ù¤·¤¿¾ì¹ç¡¢
306 .I sops
307 ¤¬»Ø¤¹ÇÛÎó¤Ë¤è¤Ã¤ÆÁàºîÂоݤȤʤ俳ƥ»¥Þ¥Õ¥©¤Î
308 .I sempid
309 ¥á¥ó¥Ð¡¼¤Ë¤Ï¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Î¥×¥í¥»¥¹ ID ¤¬ÀßÄꤵ¤ì¤ë¡£
310 ¤µ¤é¤Ë
311 .I sem_otime
312 .\" ¤È
313 .\" .I sem_ctime
314 ¤Ë¸½ºß»þ¹ï¤¬ÀßÄꤵ¤ì¤ë¡£
315 .PP
316 .BR semtimedop ()
317 ´Ø¿ô¤Î¿¶¤ëÉñ¤¤¤Ï
318 .BR semop ()
319 ¤ÈÁ´¤¯Æ±¤¸¤À¤¬¡¢
320 ¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤¬Ää»ß¤¹¤ë¾ì¹ç¡¢Ää»ß´ü´Ö¤Î¾å¸Â¤¬
321 .I timeout
322 °ú¤­¿ô¤Î»Ø¤¹
323 .I timespec
324 ¹½Â¤ÂΤǻØÄꤵ¤ì¤¿»þ´Ö¤È¤Ê¤ëÅÀ¤À¤±¤¬°Û¤Ê¤ë¡£
325 »ØÄꤷ¤¿À©¸Â»þ´Ö¤Ë㤷¤¿¾ì¹ç¤Ï¡¢
326 .BR semtimedop ()
327 ¤Ï¼ºÇÔ¤·¡¢
328 .I errno
329 ¤Ë
330 .B EAGAIN
331 ¤¬ÀßÄꤵ¤ì¤ë
332 (¤³¤Î¤È¤­
333 .I sops
334 ¤ÎÁàºî¤Ï¼Â¹Ô¤µ¤ì¤Ê¤¤)¡£
335 .I timeout
336 °ú¤­¿ô¤¬ NULL ¤Î¾ì¹ç¡¢
337 .BR semtimedop ()
338 ´Ø¿ô¤Î¿¶¤ëÉñ¤¤¤Ï
339 .BR semop ()
340 ´Ø¿ô¤ÈÁ´¤¯Æ±¤¸¤Ë¤Ê¤ë¡£
341 .SH ÊÖ¤êÃÍ
342 À®¸ù¤·¤¿¾ì¹ç¡¢
343 .BR semop ()
344 ¤È
345 .BR semtimedop ()
346 ¤Ï 0 ¤òÊÖ¤¹¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð \-1 ¤òÊÖ¤·¡¢
347 ¥¨¥é¡¼¤ò¼¨¤¹
348 .I errno
349 ¤òÀßÄꤹ¤ë¡£
350 .SH ¥¨¥é¡¼
351 ¼ºÇÔ¤·¤¿¾ì¹ç¡¢
352 .I errno
353 ¤Ë°Ê²¼¤Î¤É¤ì¤«¤¬ÀßÄꤵ¤ì¤ë:
354 .TP
355 .B E2BIG
356 .I nsops
357 °ú¤­¿ô¤¬
358 .B SEMOPM
359 ¤è¤êÂ礭¤¤¡£
360 .B SEMOPM
361 ¤Ï°ì²ó¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤Çµö¤µ¤ì¤ëÁàºî¤ÎºÇÂç¸Ä¿ô¤Ç¤¢¤ë¡£
362 .TP
363 .B EACCES
364 ¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Ë¤Ï»ØÄꤵ¤ì¤¿¥»¥Þ¥Õ¥©Áàºî¤ò¹Ô¤¦¤Î¤Ë
365 ɬÍפʥ¢¥¯¥»¥¹µö²Ä¤¬¤Ê¤¯¡¢
366 .B CAP_IPC_OWNER
367 ¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£¤â¤Ê¤¤¡£
368 .TP
369 .B EAGAIN
370 Áàºî¤òľ¤Á¤Ë½èÍý¤¹¤ë¤³¤È¤¬¤Ç¤­¤º¡¢¤«¤Ä
371 .I sem_flg
372 ¤Ë
373 .B IPC_NOWAIT
374 ¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¤«
375 .I timeout
376 ¤Ç»ØÄꤵ¤ì¤¿À©¸Â»þ´Ö¤¬·Ð²á¤·¤¿¡£
377 .TP
378 .B EFAULT
379 °ú¤­¿ô
380 .I sops
381 ¤«
382 .I timeout
383 ¤¬»Ø¤·¤Æ¤¤¤ë¥¢¥É¥ì¥¹¤Ë¥¢¥¯¥»¥¹¤Ç¤­¤Ê¤¤¡£
384 .TP
385 .B EFBIG
386 ¤¢¤ëÁàºî¤Ç¡¢
387 .I sem_num
388 ¤ÎÃͤ¬ 0 Ì¤Ëþ¤«¡¢½¸¹çÆâ¤Î¥»¥Þ¥Õ¥©¤Î¿ô°Ê¾å¤Ç¤¢¤ë¡£
389 .TP
390 .B EIDRM
391 ¥»¥Þ¥Õ¥©½¸¹ç¤¬ºï½ü¤µ¤ì¤¿¡£
392 .TP
393 .B EINTR
394 ¤³¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤ÇÄä»ß¤·¤Æ¤¤¤ë»þ¤Ë¥×¥í¥»¥¹¤¬¥·¥°¥Ê¥ë¤òÊá³Í¤·¤¿¡£
395 .BR single (7)
396 »²¾È¡£
397 .TP
398 .B EINVAL
399 ¥»¥Þ¥Õ¥©½¸¹ç¤¬Â¸ºß¤·¤Ê¤¤¤«¡¢
400 .I semid
401 ¤¬ 0 Ì¤Ëþ¤Ç¤¢¤ë¤«¡¢
402 .I nsops
403 ¤¬Àµ¤Î¿ô¤Ç¤Ê¤¤¡£
404 .TP
405 .B ENOMEM
406 ¤¢¤ëÁàºî¤Ç
407 .I sem_flg
408 ¤Ë
409 .B SEM_UNDO
410 ¤¬»ØÄꤵ¤ì¤¿¤¬¡¢¥·¥¹¥Æ¥à¤Ë¥¢¥ó¥É¥¥¹½Â¤ÂΤ˳ä¤êÅö¤Æ¤ë½½Ê¬¤Ê¥á¥â¥ê¤¬¤Ê¤¤¡£
411 .TP
412 .B ERANGE
413 ¤¢¤ëÁàºî¤Ç
414 .I sem_op+semval
415 ¤¬
416 .B SEMVMX
417 ¤è¤êÂ礭¤¤¡£
418 .B SEMVMX
419 ¤Ï
420 .I semval
421 ¤ÎºÇÂçÃͤǡ¢¤½¤ÎÃͤϼÂÁõ°Í¸¤Ç¤¢¤ë¡£
422 .SH ¥Ð¡¼¥¸¥ç¥ó
423 .BR semtimedop ()
424 ¤Ï Linux 2.5.52 ¤Ç½é¤á¤ÆÅо줷¡¢
425 ¤½¤ì¤«¤é¥«¡¼¥Í¥ë 2.4.22 ¤Ë¤â°Ü¿¢¤µ¤ì¤¿¡£
426 .BR semtimedop ()
427 ¤Î glibc ¤Ç¤Î¥µ¥Ý¡¼¥È¤Ï¥Ð¡¼¥¸¥ç¥ó 2.3.3 ¤Ç½é¤á¤ÆÅо줷¤¿¡£
428 .SH ½àµò
429 SVr4, POSIX.1-2001.
430 .\" SVr4 ¤Ë¤Ï¡¢ÄɲäǠEINVAL, EFBIG, ENOSPC ¤Î¥¨¥é¡¼¾õÂ֤ˤĤ¤¤Æ¤Î
431 .\" µ­½Ò¤¬¤¢¤ë¡£
432 .SH Ãí°Õ
433 ¤¢¤ë¥×¥í¥»¥¹¤Î
434 .I sem_undo
435 ¹½Â¤ÂΤÏ
436 .BR fork (2)
437 ¤ÇÀ¸À®¤µ¤ì¤¿»Ò¥×¥í¥»¥¹¤Ë¤Ï·Ñ¾µ¤µ¤ì¤Ê¤¤¤¬¡¢
438 .BR execve (2)
439 ¥·¥¹¥Æ¥à¥³¡¼¥ë¤Î¾ì¹ç¤Ï·Ñ¾µ¤µ¤ì¤ë¡£
440 .PP
441 .BR semop ()
442 ¤Ï¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤Ë¤è¤Ã¤ÆÃæÃǤµ¤ì¤¿¸å¤Ë¡¢
443 ·è¤·¤Æ¼«Æ°Åª¤ËºÆ³«¤¹¤ë¤³¤È¤Ï¤Ê¤¤¡£
444 ¤¿¤È¤¨¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤ÎÀßÄê»þ¤Ë
445 .B SA_RESTART
446 ¥Õ¥é¥°¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Æ¤âºÆ³«¤¹¤ë¤³¤È¤Ï¤Ê¤¤
447 .PP
448 .I semadj
449 ¤Ï¥×¥í¥»¥¹¤´¤È¤ÎÀ°¿ô¤Ç¡¢
450 .B SEM_UNDO
451 ¥Õ¥é¥°¤òÀßÄꤷ¤Æ¼Â¹Ô¤µ¤ì¤¿Á´¤Æ¤Î¥»¥Þ¥Õ¥©Áàºî¤Î(Éé¿ô¤Î)¥«¥¦¥ó¥¿¤Ç¤¢¤ë¡£
452 .BR semctl (2)
453 ¤Ë
454 .B SETVAL
455 ¤Þ¤¿¤Ï
456 .B SETALL
457 ¤ò»ØÄꤷ¡¢¥»¥Þ¥Õ¥©¤ÎÃͤ¬
458 ľÀÜÀßÄꤵ¤ì¤¿¾ì¹ç¤Ë¤Ï¡¢Á´¤Æ¤Î¥×¥í¥»¥¹¤Ë¤ª¤¤¤ÆÂбþ¤¹¤ë
459 .I semadj
460 ¤ÎÃͤ¬¥¯¥ê¥¢¤µ¤ì¤ë¡£
461 .PP
462 ¤¢¤ë¥»¥Þ¥Õ¥©¤Î \fIsemval\fP, \fIsempid\fP, \fIsemzcnt\fP, \fIsemnct\fP
463 ¤ÎÃͤϤ¤¤º¤ì¤â¡¢Å¬ÀÚ¤ÊÁàºî¤ò»ØÄꤷ¤Æ
464 .BR semctl (2)
465 ¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤Ç¼èÆÀ¤Ç¤­¤ë¡£
466 .PP
467 ¥»¥Þ¥Õ¥©½¸¹ç¤Î¥ê¥½¡¼¥¹¤Ë´Ø¤¹¤ëÀ©¸Â¤Î¤¦¤Á¡¢
468 .BR semop ()
469 ¤Ë±Æ¶Á¤òµÚ¤Ü¤¹¤â¤Î¤ò°Ê²¼¤Ëµó¤²¤ë:
470 .TP
471 .B SEMOPM
472 °ì²ó¤Î
473 .BR semop ()
474 ¤Çµö¤µ¤ì¤ëÁàºî¤ÎºÇÂç¿ô (32)¡£
475 (Linux ¤Ç¤Ï¡¢¤³¤ÎÀ©¸ÂÃͤÏ
476 .I /proc/sys/kernel/sem
477 ¤ÎÂè3¥Õ¥£¡¼¥ë¥É¤ËÂбþ¤·¡¢Æɤ߽Ф·¤âÊѹ¹¤â¤Ç¤­¤ë)¡£
478 .\" ¤³¤Î /proc ¥Õ¥¡¥¤¥ë¤Ï Linux 2.2 °ÊÁ°¤Ç¤ÏÍøÍѤǤ­¤Ê¤¤ -- MTK
479 .TP
480 .B SEMVMX
481 .I semval
482 ¤¬¼è¤êÆÀ¤ëºÇÂçÃÍ: ¼ÂÁõ°Í¸ (32767)¡£
483 .PP
484 °Ê²¼¤ÎÃͤ˴ؤ·¤Æ¤Ï¼ÂÁõ°Í¸¤ÎÀ©¸Â¤Ï¤Ê¤¤¡£
485 ½ªÎ»»þ¤ÎÄ´À° (adjust on exit) ¤ÎºÇÂçÃÍ
486 .RB ( SEMAEM )¡¢
487 ¥·¥¹¥Æ¥àÁ´ÂΤΥ¢¥ó¥É¥¥¹½Â¤ÂΤκÇÂç¿ô
488 .RB ( SEMMNU )¡¢
489 ¥×¥í¥»¥¹¤¢¤¿¤ê¤Î¥¢¥ó¥É¥¥¹½Â¤ÂΤκÇÂç¿ô¡£
490 .SH ¥Ð¥°
491 ¥×¥í¥»¥¹¤¬½ªÎ»¤¹¤ëºÝ¡¢¥×¥í¥»¥¹¤ËÂбþ¤¹¤ë
492 .I semadj
493 ¤Î½¸¹ç¤ò»È¤Ã¤Æ¡¢
494 .B SEM_UNDO
495 ¥Õ¥é¥°ÉÕ¤­¤Ç¼Â¹Ô¤µ¤ì¤¿Á´¤Æ¤Î¥»¥Þ¥Õ¥©Áàºî¤Î±Æ¶Á¤ò¼è¤ê¾Ã¤¹¡£
496 ¤³¤ì¤Ë¤è¤ê¤¢¤ëÌäÂ꤬ȯÀ¸¤¹¤ë: ¤³¤ì¤é¤Î¥»¥Þ¥Õ¥©¤ÎÄ´À°¤ò¹Ô¤Ã¤Æ¤¤¤ë¤È¡¢
497 Ãæ¤Ë¤Ï¥»¥Þ¥Õ¥©¤ÎÃͤ¬ 0 Ì¤Ëþ¤ÎÃͤˤ·¤è¤¦¤È¤¹¤ë¾ì¹ç¤¬½Ð¤Æ¤¯¤ë¡£
498 ¤³¤Î¤è¤¦¤Ê¾ì¹ç¡¢¤É¤Î¤è¤¦¤Ë¼ÂÁõ¤¹¤ë¤Ù¤­¤«?
499 ¤Ò¤È¤Ä¤Î¹Í¤¨¤é¤ì¤ë¼êË¡¤Ï¡¢Á´¤Æ¤Î¥»¥Þ¥Õ¥©Ä´À°¤¬¼Â¹Ô¤µ¤ì¤ë¤Þ¤Ç
500 Ää»ß¤¹¤ë¤³¤È¤Ç¤¢¤ë¡£¤·¤«¤·¡¢¤³¤ÎÊýË¡¤Ç¤Ï¥×¥í¥»¥¹¤Î½ªÎ»¤¬
501 Ĺ»þ´Ö¤Ë¤ï¤¿¤Ã¤ÆÄä»ß¤µ¤ì¤ë¤³¤È¤¬¤¢¤ë¤Î¤Ç˾¤Þ¤·¤¯¤Ê¤¤¡£
502 ¤·¤«¤â¤É¤ì¤¯¤é¤¤Ä¹»þ´Ö¤Ë¤Ê¤ë¤«¤Ïʬ¤«¤é¤Ê¤¤¡£
503 Ê̤ÎÁªÂò»è¤È¤·¤Æ¡¢¤³¤Î¤è¤¦¤Ê¥»¥Þ¥Õ¥©Ä´À°¤ò´°Á´¤Ë̵»ë¤·¤Æ¤·¤Þ¤¦ÊýË¡¤¬¤¢¤ë
504 (¤³¤ì¤Ï¥»¥Þ¥Õ¥©Áàºî¤È¤·¤Æ
505 .B IPC_NOWAIT
506 ¤¬»ØÄꤹ¤ë¤Î¤È¾¯¤·»÷¤Æ¤¤¤ë)¡£
507 Linux ¤ÏÂè»°¤Î¼êË¡¤òºÎÍѤ·¤Æ¤¤¤ë: ¥»¥Þ¥Õ¥©¤ÎÃͤò½ÐÍè¤ë¤À¤± (¤Ä¤Þ¤ê
508 0 ¤Þ¤Ç) ¸º¾¯¤µ¤»¤Æ¡¢¥×¥í¥»¥¹¤Î½ªÎ»¤òľ¤Á¤Ë³¹Ô¤Ç¤­¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤ë¡£
509
510 ¥«¡¼¥Í¥ë 2.6.x (x <= 10) ¤Ë¤Ï¡¢¤¢¤ë¾õ¶·¤Ë¤ª¤¤¤Æ¥»¥Þ¥Õ¥©Ãͤ¬ 0 ¤Ë¤Ê¤ë¤Î¤ò
511 ÂԤäƤ¤¤ë¥×¥í¥»¥¹¤¬¡¢¥»¥Þ¥Õ¥©Ãͤ¬¼ÂºÝ¤Ë 0 ¤Ë¤Ê¤Ã¤¿¤È¤­¤Ëµ¯¾² (wake up)
512 ¤µ¤ì¤Ê¤¤¡¢¤È¤¤¤¦¥Ð¥°¤¬¤¢¤ë¡£¤³¤Î¥Ð¥°¤Ï¥«¡¼¥Í¥ë 2.6.11 ¤Ç½¤Àµ¤µ¤ì¤Æ¤¤¤ë¡£
513 .\" ¥Ð¥°¥ì¥Ý¡¼¥È:
514 .\" http://marc.theaimsgroup.com/?l=linux-kernel&m=110260821123863&w=2
515 .\" ½¤Àµ:
516 .\" http://marc.theaimsgroup.com/?l=linux-kernel&m=110261701025794&w=2
517 .SH Îã
518 °Ê²¼¤ÎÉôʬŪ¤Ê¥³¡¼¥É¤Ï¡¢
519 ¥»¥Þ¥Õ¥© 0 ¤ÎÃͤ¬ 0 ¤Ë¤Ê¤ë¤Î¤òÂԤäƤ«¤é¡¢
520 ¥»¥Þ¥Õ¥©¤ÎÃͤò 1 ²Ã»»¤¹¤ë½èÍý¤ò¡¢
521 .BR semop ()
522 ¤ò»È¤Ã¤Æ¥¢¥È¥ß¥Ã¥¯ (atomically) ¤Ë¹Ô¤¦¡£
523 .nf
524
525     struct sembuf sops[2];
526     int semid;
527
528     /* Code to set \fIsemid\fP omitted */
529
530     sops[0].sem_num = 0;        /* Operate on semaphore 0 */
531     sops[0].sem_op = 0;         /* Wait for value to equal 0 */
532     sops[0].sem_flg = 0;
533
534     sops[1].sem_num = 0;        /* Operate on semaphore 0 */
535     sops[1].sem_op = 1;         /* Increment value by one */
536     sops[1].sem_flg = 0;
537
538     if (semop(semid, sops, 2) == \-1) {
539         perror("semop");
540         exit(EXIT_FAILURE);
541     }
542 .fi
543 .SH ´ØÏ¢¹àÌÜ
544 .BR semctl (2),
545 .BR semget (2),
546 .BR sigaction (2),
547 .BR capabilities (7),
548 .BR sem_overview (7),
549 .BR svipc (7),
550 .BR time (7)