.\" Updated 2005-03-01, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
.\" Updated 2006-07-20, Akihiro MOTOKI, LDP v2.36
.\"
-.\"WORD: semaphore ¥»¥Þ¥Õ¥©
-.\"WORD: identifier ¼±ÊÌ»Ò
-.\"WORD: owner ½êͼÔ
-.\"WORD: group ¥°¥ë¡¼¥×
-.\"WORD: other ¾¿Í
-.\"WORD: effective user ID ¼Â¸ú¥æ¡¼¥¶¡¼ ID
-.\"WORD: effective group ID ¼Â¸ú¥°¥ë¡¼¥× ID
-.\"WORD: calling process ¸Æ¤Ó½Ð¤·¸µ¤Î¥×¥í¥»¥¹
-.\"WORD: process ¥×¥í¥»¥¹
-.\"WORD: policy Êý¿Ë
-.\"WORD: structure ¹½Â¤ÂÎ
-.\"WORD: initialize ½é´ü²½
-.\"WORD: system call ¥·¥¹¥Æ¥à¡¦¥³¡¼¥ë
+.\"WORD: semaphore ã\82»ã\83\9eã\83\95ã\82©
+.\"WORD: identifier 識別子
+.\"WORD: owner 所有者
+.\"WORD: group グループ
+.\"WORD: other 他人
+.\"WORD: effective user ID å®\9få\8a¹ã\83¦ã\83¼ã\82¶ã\83¼ ID
+.\"WORD: effective group ID 実効グループ ID
+.\"WORD: calling process å\91¼ã\81³å\87ºã\81\97å\85\83ã\81®ã\83\97ã\83ã\82»ã\82¹
+.\"WORD: process ã\83\97ã\83ã\82»ã\82¹
+.\"WORD: policy 方針
+.\"WORD: structure 構造体
+.\"WORD: initialize 初期化
+.\"WORD: system call システム・コール
.\"
.TH SEMGET 2 2004-05-27 "Linux" "Linux Programmer's Manual"
.\"O .SH NAME
-.SH ̾Á°
+.SH 名前
.\"O semget \- get a semaphore set identifier
-semget \- ¥»¥Þ¥Õ¥©½¸¹ç¤Î¼±Ê̻Ҥò¼èÆÀ¤¹¤ë
+semget \- セマフォ集合の識別子を取得する
.\"O .SH SYNOPSIS
-.SH ½ñ¼°
+.SH 書式
.nf
.B #include <sys/types.h>
.B #include <sys/ipc.h>
.BI "int " nsems ,
.BI "int " semflg );
.\"O .SH DESCRIPTION
-.SH ÀâÌÀ
+.SH 説明
.\"O The
.\"O .BR semget ()
.\"O system call returns the semaphore set identifier
.\"O associated with the argument
.\"O .IR key .
.BR semget ()
-¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¡¢°ú¤¿ô
+システムコールは、引き数
.I key
-¤ËÂбþ¤¹¤ë¥»¥Þ¥Õ¥©½¸¹ç (semaphore set) ¤Î
-¼±ÊÌ»Ò (identifier) ¤òÊÖ¤¹¡£
+に対応するセマフォ集合 (semaphore set) の
+識別子 (identifier) を返す。
.\"O A new set of
.\"O .I nsems
.\"O semaphores is created if
.\"O is specified in
.\"O .IR semflg .
.I key
-¤ÎÃͤ¬
+の値が
.B IPC_PRIVATE
-¤Î¾ì¹ç¡¢¤â¤·¤¯¤Ï
+の場合、もしくは
.I semflg
-¤Ë
+に
.B IPC_CREAT
-¤¬»ØÄꤵ¤ì¤Æ¤¤¤Æ¡¢
+が指定されていて、
.I key
-¤ËÂбþ¤¹¤ë¥»¥Þ¥Õ¥©½¸¹ç¤¬Â¸ºß¤·¤Ê¤¤¾ì¹ç¡¢
+に対応するセマフォ集合が存在しない場合、
.I nsems
-¸Ä¤Î¥»¥Þ¥Õ¥©¤«¤é¤Ê¤ë¿·¤·¤¤½¸¹ç¤¬ºîÀ®¤µ¤ì¤ë¡£
+個のセマフォからなる新しい集合が作成される。
.PP
.\"O If
.\"O .I semflg
.\"O for
.\"O .BR open (2).)
.I semflg
-¤Ë
+に
.B IPC_CREAT
-¤È
+と
.B IPC_EXCL
-¤ÎξÊý¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¢
+の両方が指定された場合、
.I key
-¤ËÂбþ¤¹¤ë¥»¥Þ¥Õ¥©½¸¹ç¤¬´û¤Ë¸ºß¤¹¤ë¤È¡¢
+に対応するセマフォ集合が既に存在すると、
.BR semget ()
-¤Ï¼ºÇÔ¤·¡¢
+は失敗し、
.I errno
-¤Ë
+に
.B EEXIST
-¤¬ÀßÄꤵ¤ì¤ë
-(¤³¤ì¤Ï
+が設定される
+(これは
.BR open (2)
-¤Ë
+に
.B O_CREAT | O_EXCL
-¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¤ÎÆ°ºî¤ÈƱ¤¸¤Ç¤¢¤ë)¡£
+が指定された場合の動作と同じである)。
.PP
.\"O Upon creation, the least significant 9 bits of the argument
.\"O .I semflg
.\"O (though the execute permissions are
.\"O not meaningful for semaphores, and write permissions mean permission
.\"O to alter semaphore values).
-¥»¥Þ¥Õ¥©½¸¹çºîÀ®»þ¤Ë¡¢°ú¤¿ô
+セマフォ集合作成時に、引き数
.I semflg
-¤Î²¼°Ì 9 ¥Ó¥Ã¥È¤Ï¡¢¤½¤Î¥»¥Þ¥Õ¥©½¸¹ç¤Î (½êÍ¼Ô (owner)¡¢¥°¥ë¡¼¥× (group)¡¢
-¾¿Í (others) ¤ËÂФ¹¤ë) ¥¢¥¯¥»¥¹µö²Ä¤ÎÄêµÁ¤È¤·¤Æ»ÈÍѤµ¤ì¤ë¡£
-¤³¤ì¤é¤Î¥Ó¥Ã¥È¤Ï
+の下位 9 ビットは、そのセマフォ集合の (所有者 (owner)、グループ (group)、
+他人 (others) に対する) アクセス許可の定義として使用される。
+これらのビットは
.BR open (2)
-¤Î°ú¤¿ô
+の引き数
.I mode
-¤ÈƱ¤¸·Á¼°¤ÇƱ¤¸°ÕÌ£¤Ç¤¢¤ë
-(⤷¡¢¼Â¹Ô (execute) µö²Ä¤Ï¥»¥Þ¥Õ¥©¤Ç¤Ï°ÕÌ£¤ò»ý¤¿¤º¡¢
-½ñ¤¹þ¤ß (write) µö²Ä¤Ï¥»¥Þ¥Õ¥©ÃͤÎÊѹ¹ (alter) µö²Ä¤È¤·¤Æµ¡Ç½¤¹¤ë)¡£
+と同じ形式で同じ意味である
+(但し、実行 (execute) 許可はセマフォでは意味を持たず、
+書き込み (write) 許可はセマフォ値の変更 (alter) 許可として機能する)。
.PP
.\"O The values of the semaphores in a newly created set are indeterminate.
.\"O (POSIX.1-2001 is explicit on this point.)
.\"O initializes the semaphore values to 0,
.\"O a portable application cannot rely on this:
.\"O it should explicitly initialize the semaphores to the desired values.
-¿·¤·¤¯ºîÀ®¤µ¤ì¤¿¥»¥Þ¥Õ¥©½¸¹ç¤Î³Æ¥»¥Þ¥Õ¥©¤ÎÃͤÏÉÔÄê¤Ç¤¢¤ë
-(¤³¤ÎÅÀ¤Ï POSIX.1-2001 ¤ËÌÀµ¤µ¤ì¤Æ¤¤¤ë)¡£
-Linux ¤Ï¾¤Î¿¤¯¤Î¼ÂÁõ¤ÈƱÍͤ˥»¥Þ¥Õ¥©Ãͤò 0 ¤Ë½é´ü²½¤¹¤ë¤¬¡¢
-°Ü¿¢À¤ò¹Íθ¤·¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï¤³¤ÎÆ°ºî¤òÁ°Äó¤Ë¤¹¤Ù¤¤Ç¤Ï¤Ê¤¤¡£
-¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ÏÌÀ¼¨Åª¤Ë¥»¥Þ¥Õ¥©¤ò´õ˾¤ÎÃͤǽé´ü²½¤¹¤Ù¤¤Ç¤¢¤ë¡£
+新しく作成されたセマフォ集合の各セマフォの値は不定である
+(この点は POSIX.1-2001 に明記されている)。
+Linux は他の多くの実装と同様にセマフォ値を 0 に初期化するが、
+移植性を考慮したアプリケーションではこの動作を前提にすべきではない。
+アプリケーションは明示的にセマフォを希望の値で初期化すべきである。
.\" In truth, every one of the many implementations that I've tested sets
.\" the values to zero, but I suppose there is/was some obscure
.\" implementation out there that does not.
.\"O (see
.\"O .BR semctl (2)),
.\"O as follows:
-¿·µ¬¤Î¥»¥Þ¥Õ¥©½¸¹ç¤òºîÀ®¤¹¤ëºÝ¡¢
+新規のセマフォ集合を作成する際、
.BR semget ()
-¤Ï¥»¥Þ¥Õ¥©½¸¹ç¤Î¾ðÊó¤òÊÝ»ý¤¹¤ë¥Ç¡¼¥¿¹½Â¤ÂÎ
+はセマフォ集合の情報を保持するデータ構造体
.I semid_ds
-¤ò¼¡¤Î¤è¤¦¤Ë½é´ü²½¤¹¤ë
+を次のように初期化する
.RI ( semid_ds
-¤Ë¤Ä¤¤¤Æ¤Ï
+については
.BR semctl (2)
-¤ò»²¾È):
+を参照):
.IP
.\"O .I sem_perm.cuid
.\"O and
.\"O .I sem_perm.uid
.\"O are set to the effective user ID of the calling process.
.I sem_perm.cuid
-¤È
+と
.I sem_perm.uid
-¤Ë¡¢¸Æ¤Ó½Ð¤·¸µ¤Î¥×¥í¥»¥¹¤Î¼Â¸ú (effective) ¥æ¡¼¥¶ ID ¤òÀßÄꤹ¤ë¡£
+に、呼び出し元のプロセスの実効 (effective) ユーザ ID を設定する。
.IP
.\"O .I sem_perm.cgid
.\"O and
.\"O .I sem_perm.gid
.\"O are set to the effective group ID of the calling process.
.I sem_perm.cgid
-¤È
+と
.I sem_perm.gid
-¤Ë¡¢¸Æ¤Ó½Ð¤·¸µ¤Î¥×¥í¥»¥¹¤Î¼Â¸ú (effective) ¥°¥ë¡¼¥× ID ¤òÀßÄꤹ¤ë¡£
+に、呼び出し元のプロセスの実効 (effective) グループ ID を設定する。
.IP
.\"O The least significant 9 bits of
.\"O .I sem_perm.mode
.\"O are set to the least significant 9 bits of
.\"O .IR semflg .
.I sem_perm.mode
-¤Î²¼°Ì 9 ¥Ó¥Ã¥È¤Ë
+の下位 9 ビットに
.I semflg
-¤Î²¼°Ì 9 ¥Ó¥Ã¥È¤òÀßÄꤹ¤ë¡£
+の下位 9 ビットを設定する。
.IP
.\"O .I sem_nsems
.\"O is set to the value of
.\"O .IR nsems .
.I sem_nsems
-¤Ë
+に
.I nsems
-¤ÎÃͤòÀßÄꤹ¤ë¡£
+の値を設定する。
.IP
.\"O .I sem_otime
.\"O is set to 0.
.I sem_otime
-¤Ë 0 ¤òÀßÄꤹ¤ë¡£
+に 0 を設定する。
.IP
.\"O .I sem_ctime
.\"O is set to the current time.
.I sem_ctime
-¤Ë¸½ºß¤Î»þ¹ï¤òÀßÄꤹ¤ë¡£
+に現在の時刻を設定する。
.PP
.\"O The argument
.\"O .I nsems
.\"O must be greater than 0
.\"O and less than or equal to the maximum number of semaphores per semaphore set
.\"O .RB ( SEMMSL ).
-¥»¥Þ¥Õ¥©½¸¹ç¤ÎºîÀ®¤ò¹Ô¤ï¤Ê¤¤¾ì¹ç¤Ï¡¢°ú¤¿ô
+セマフォ集合の作成を行わない場合は、引き数
.I nsems
-¤Ë (don't care ¤ò°ÕÌ£¤¹¤ë) 0 ¤ò»ØÄꤷ¤Æ¤â¤è¤¤¡£
-¤½¤¦¤Ç¤Ê¤¤¾ì¹ç¤Ï¡¢
+に (don't care を意味する) 0 を指定してもよい。
+そうでない場合は、
.I nsems
-¤Ï 0 ¤è¤êÂ礤¤ÃͤǤʤ±¤ì¤Ð¤Ê¤é¤º¡¢¥»¥Þ¥Õ¥©½¸¹ç¤¢¤¿¤ê¤Î¥»¥Þ¥Õ¥©¤ÎºÇÂç¿ô
+は 0 より大きい値でなければならず、セマフォ集合あたりのセマフォの最大数
.RB ( SEMMSL )
-°Ê²¼¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+以下でなければならない。
.PP
.\"O If the semaphore set already exists, the permissions are
.\"O verified.
-¥»¥Þ¥Õ¥©½¸¹ç¤¬´û¤Ë¸ºß¤·¤¿¾ì¹ç¤Ï¡¢¥¢¥¯¥»¥¹µö²Ä¤Î¸¡ºº¤¬¹Ô¤ï¤ì¤ë¡£
+セマフォ集合が既に存在した場合は、アクセス許可の検査が行われる。
.\"O .\" and a check is made to see if it is marked for destruction.
-.\" Ç˲õ (destruction) ¥Þ¡¼¥¯¤¬¤Ê¤¤¤«¥Á¥§¥Ã¥¯¤µ¤ì¤ë¡£
+.\" 破壊 (destruction) マークがないかチェックされる。
.\"O .SH "RETURN VALUE"
-.SH ÊÖ¤êÃÍ
+.SH 返り値
.\"O If successful, the return value will be the semaphore set identifier
.\"O (a nonnegative integer), otherwise \-1
.\"O is returned, with
.\"O .I errno
.\"O indicating the error.
-À®¸ù¤·¤¿¾ì¹ç¡¢¥»¥Þ¥Õ¥©½¸¹ç¤Î¼±ÊÌ»Ò (ÈóÉé¤ÎÀ°¿ô) ¤¬ÊÖ¤êÃͤȤʤ롣
-¼ºÇÔ¤·¤¿¾ì¹ç¤Ï \-1 ¤¬ÊÖ¤µ¤ì¡¢
+成功した場合、セマフォ集合の識別子 (非負の整数) が返り値となる。
+失敗した場合は \-1 が返され、
.I errno
-¤Ë¥¨¥é¡¼¤ò¼¨¤¹Ãͤ¬ÀßÄꤵ¤ì¤ë¡£
+にエラーを示す値が設定される。
.\"O .SH ERRORS
-.SH ¥¨¥é¡¼
+.SH ã\82¨ã\83©ã\83¼
.\"O On failure
.\"O .I errno
.\"O will be set to one of the following:
-¼ºÇÔ¤·¤¿¾ì¹ç¡¢
+失敗した場合、
.I errno
-¤Ë¤Ï°Ê²¼¤ÎÃͤΤ¤¤º¤ì¤«°ì¤Ä¤¬ÀßÄꤵ¤ì¤ë:
+には以下の値のいずれか一つが設定される:
.TP
.B EACCES
.\"O A semaphore set exists for
.\"O .B CAP_IPC_OWNER
.\"O capability.
.I key
-¤ËÂбþ¤¹¤ë¥»¥Þ¥Õ¥©½¸¹ç¤Ï¸ºß¤¹¤ë¤¬¡¢
-¸Æ¤Ó½Ð¤·¸µ¤Î¥×¥í¥»¥¹¤Ï¤½¤Î½¸¹ç¤Ø¤Î¥¢¥¯¥»¥¹µö²Ä¤¬¤Ê¤¯¡¢
+に対応するセマフォ集合は存在するが、
+呼び出し元のプロセスはその集合へのアクセス許可がなく、
.B CAP_IPC_OWNER
-¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£¤â»ý¤Ã¤Æ¤¤¤Ê¤¤¡£
+ケーパビリティも持っていない。
.TP
.B EEXIST
.\"O A semaphore set exists for
.\"O and
.\"O .BR IPC_EXCL .
.I key
-¤ËÂбþ¤¹¤ë¥»¥Þ¥Õ¥©½¸¹ç¤¬Â¸ºß¤·¡¢
+に対応するセマフォ集合が存在し、
.I semflg
-¤Ë¤Ï
+には
.B IPC_CREAT
-¤È
+と
.B IPC_EXCL
-¤¬»ØÄꤵ¤ì¤Æ¤¤¤¿¡£
+が指定されていた。
.\" .TP
.\"O .\" .B EIDRM
.\"O .\" The semaphore set is marked to be deleted.
.\" .B EIDRM
-.\" ¥»¥Þ¥Õ¥©½¸¹ç¤Ëºï½ü (delete) ¥Þ¡¼¥¯¤¬¤Ä¤±¤é¤ì¤Æ¤¤¤ë¡£
+.\" セマフォ集合に削除 (delete) マークがつけられている。
.TP
.B EINVAL
.\"O .I nsems
.\"O of semaphores per semaphore set
.\"O .RB ( SEMMSL ),
.I nsems
-¤¬ 0 ¤è¤ê¾®¤µ¤¤¤«¡¢¥»¥Þ¥Õ¥©½¸¹ç¤¢¤¿¤ê¤Î¥»¥Þ¥Õ¥©¤ÎºÇÂç¿ô
+が 0 より小さいか、セマフォ集合あたりのセマフォの最大数
.RB ( SEMMSL )
-¤è¤êÂ礤¤¡£
+より大きい。
.\"O or a semaphore set corresponding to
.\"O .I key
.\"O already exists, and
.\"O .I nsems
.\"O is larger than the number of semaphores in that set.
-¤Þ¤¿¤Ï¡¢
+または、
.I key
-¤ËÂбþ¤¹¤ë¥»¥Þ¥Õ¥©½¸¹ç¤¬´û¤Ë¸ºß¤·¡¢
+に対応するセマフォ集合が既に存在し、
.I nsems
-¤¬¤½¤Î½¸¹ç¤Î¥»¥Þ¥Õ¥©¿ô¤è¤ê¤âÂ礤¤¡£
+がその集合のセマフォ数よりも大きい。
.TP
.B ENOENT
.\"O No semaphore set exists for
.\"O did not specify
.\"O .BR IPC_CREAT .
.I key
-¤ËÂбþ¤¹¤ë¥»¥Þ¥Õ¥©½¸¹ç¤¬Â¸ºß¤»¤º¡¢
+に対応するセマフォ集合が存在せず、
.I semflg
-¤Ë
+に
.B IPC_CREAT
-¤¬»ØÄꤵ¤ì¤Æ¤â¤¤¤Ê¤¤¡£
+が指定されてもいない。
.TP
.B ENOMEM
.\"O A semaphore set has to be created but the system does not have
.\"O enough memory for the new data structure.
-¥»¥Þ¥Õ¥©½¸¹ç¤òºîÀ®¤·¤è¤¦¤È¤·¤¿¤¬¡¢¿·¤·¤¤¥Ç¡¼¥¿¹½Â¤ÂΤò
-ºîÀ®¤¹¤ë¤Î¤Ë½½Ê¬¤Ê¥á¥â¥ê¤¬¥·¥¹¥Æ¥à¤Ë¸ºß¤·¤Ê¤¤¡£
+セマフォ集合を作成しようとしたが、新しいデータ構造体を
+作成するのに十分なメモリがシステムに存在しない。
.TP
.B ENOSPC
.\"O A semaphore set has to be created but the system limit for the maximum
.\"O or the system wide maximum number of semaphores
.\"O .RB ( SEMMNS ),
.\"O would be exceeded.
-¥»¥Þ¥Õ¥©½¸¹ç¤òºîÀ®¤·¤è¤¦¤È¤¹¤ë¤È¡¢¥·¥¹¥Æ¥à¤Î¥»¥Þ¥Õ¥©½¸¹ç¤Î
-ºÇÂç¿ô
+セマフォ集合を作成しようとすると、システムのセマフォ集合の
+最大数
.RB ( SEMMNI )
-¤«¡¢¥·¥¹¥Æ¥àÁ´ÂΤΥ»¥Þ¥Õ¥©¤ÎºÇÂç¿ô
+か、システム全体のセマフォの最大数
.RB ( SEMMNS )
-¤Î¤¤¤º¤ì¤«¤òĶ¤¨¤Æ¤·¤Þ¤¦¡£
+のいずれかを超えてしまう。
.\"O .SH "CONFORMING TO"
-.SH ½àµò
+.SH 準拠
SVr4, POSIX.1-2001.
.\"O .\" SVr4 documents additional error conditions EFBIG, E2BIG, EAGAIN,
.\"O .\" ERANGE, EFAULT.
-.\" SVr4 ¤Ë¤Ï¡¢ÄÉ²Ã¤Ç EFBIG, E2BIG, EAGAIN, ERANGE, EFAULT
-.\" ¤Î¥¨¥é¡¼¾õÂ֤ˤĤ¤¤Æ¤Îµ½Ò¤¬¤¢¤ë¡£
+.\" SVr4 には、追加で EFBIG, E2BIG, EAGAIN, ERANGE, EFAULT
+.\" のエラー状態についての記述がある。
.\"O .SH NOTES
-.SH Ãí°Õ
+.SH 注意
.\"O .B IPC_PRIVATE
.\"O isn't a flag field but a
.\"O .I key_t
.\"O type.
.B IPC_PRIVATE
-¤Ï¥Õ¥é¥°¡¦¥Õ¥£¡¼¥ë¥É¤Ë»ØÄꤹ¤ë¤â¤Î¤Ç¤Ï¤Ê¤¯¡¢
+はフラグ・フィールドに指定するものではなく、
.I key_t
-·¿¤Ç¤¢¤ë¡£
+型である。
.\"O If this special value is used for
.\"O .IR key ,
.\"O the system call ignores everything but the least significant 9 bits of
.\"O .I semflg
.\"O and creates a new semaphore set (on success).
-¤³¤ÎÆÃÊ̤ÊÃͤ¬
+この特別な値が
.I key
-¤Ë»ØÄꤵ¤ì¤ë¤È¡¢
+に指定されると、
.BR semget ()
.I semflg
-¤Î²¼°Ì 9 ¥Ó¥Ã¥È°Ê³°¤ÏÁ´¤Æ̵»ë¤·¡¢
-(À®¸ù¤·¤¿¾ì¹ç¤Ï) ¿·¤·¤¤¥»¥Þ¥Õ¥©½¸¹ç¤òºîÀ®¤¹¤ë¡£
+の下位 9 ビット以外は全て無視し、
+(成功した場合は) 新しいセマフォ集合を作成する。
.PP
.\"O The following limits on semaphore set resources affect the
.\"O .BR semget ()
.\"O call:
-¥»¥Þ¥Õ¥©½¸¹ç¤Î¥ê¥½¡¼¥¹¤Ë´Ø¤¹¤ëÀ©¸Â¤Î¤¦¤Á¡¢
+セマフォ集合のリソースに関する制限のうち、
.BR semget ()
-¤Ë±Æ¶Á¤òµÚ¤Ü¤¹¤â¤Î¤ò°Ê²¼¤Ëµó¤²¤ë:
+に影響を及ぼすものを以下に挙げる:
.TP
.B SEMMNI
.\"O System wide maximum number of semaphore sets: policy dependent
.\"O (on Linux, this limit can be read and modified via the fourth field of
.\"O .IR /proc/sys/kernel/sem ).
.\"O .\" This /proc file is not available in Linux 2.2 and earlier -- MTK
-¥·¥¹¥Æ¥àÁ´ÂΤΥ»¥Þ¥Õ¥©½¸¹ç¤ÎºÇÂç¿ô: Êý¿Ë°Í¸
-(Linux ¤Ç¤Ï¡¢¤³¤ÎÀ©¸ÂÃͤÏ
+システム全体のセマフォ集合の最大数: 方針依存
+(Linux では、この制限値は
.I /proc/sys/kernel/sem
-¤ÎÂè4¥Õ¥£¡¼¥ë¥É¤ËÂбþ¤·¡¢Æɤ߽Ф·¤âÊѹ¹¤â¤Ç¤¤ë)¡£
-.\" ¤³¤Î /proc ¥Õ¥¡¥¤¥ë¤Ï Linux 2.2 °ÊÁ°¤Ç¤ÏÍøÍѤǤ¤Ê¤¤ -- MTK
+の第4フィールドに対応し、読み出しも変更もできる)。
+.\" この /proc ファイルは Linux 2.2 以前では利用できない -- MTK
.TP
.B SEMMSL
.\"O Maximum number of semaphores per semid: implementation dependent
.\"O (on Linux, this limit can be read and modified via the first field of
.\"O .IR /proc/sys/kernel/sem ).
-semid ¤¢¤¿¤ê¤Î¥»¥Þ¥Õ¥©¤ÎºÇÂç¿ô: ¼ÂÁõ°Í¸
-(Linux ¤Ç¤Ï¡¢¤³¤ÎÀ©¸ÂÃͤÏ
+semid あたりのセマフォの最大数: 実装依存
+(Linux では、この制限値は
.I /proc/sys/kernel/sem
-¤ÎÂè1¥Õ¥£¡¼¥ë¥É¤ËÂбþ¤·¡¢Æɤ߽Ф·¤âÊѹ¹¤â¤Ç¤¤ë)¡£
+の第1フィールドに対応し、読み出しも変更もできる)。
.TP
.B SEMMNS
.\"O System wide maximum number of semaphores: policy dependent
.\"O Values greater than
.\"O .B SEMMSL * SEMMNI
.\"O makes it irrelevant.
-¥·¥¹¥Æ¥àÁ´ÂΤΥ»¥Þ¥Õ¥©¤ÎºÇÂç¿ô: Êý¿Ë°Í¸
-(Linux ¤Ç¤Ï¡¢¤³¤ÎÀ©¸ÂÃͤÏ
+システム全体のセマフォの最大数: 方針依存
+(Linux では、この制限値は
.I /proc/sys/kernel/sem
-¤ÎÂè2¥Õ¥£¡¼¥ë¥É¤ËÂбþ¤·¡¢Æɤ߽Ф·¤âÊѹ¹¤â¤Ç¤¤ë)¡£
+の第2フィールドに対応し、読み出しも変更もできる)。
.B SEMMSL * SEMMNI
-¤è¤êÂ礤ÊÃͤϰÕÌ£¤ò»ý¤¿¤Ê¤¤¡£
+より大きな値は意味を持たない。
.\"O .SH BUGS
-.SH ¥Ð¥°
+.SH ã\83\90ã\82°
.\"O The name choice
.\"O .B IPC_PRIVATE
.\"O was perhaps unfortunate,
.\"O .B IPC_NEW
.\"O would more clearly show its function.
.B IPC_PRIVATE
-¤È¤¤¤¦Ì¾Á°¤òÁª¤ó¤À¤Î¤Ï¤ª¤½¤é¤¯¼ºÇԤǤ¢¤í¤¦¡£
+という名前を選んだのはおそらく失敗であろう。
.B IPC_NEW
-¤ÎÊý¤¬¤è¤êÌÀ³Î¤Ë¤½¤Îµ¡Ç½¤òɽ¤·¤Æ¤¤¤ë¤À¤í¤¦¡£
+の方がより明確にその機能を表しているだろう。
.LP
.\"O The semaphores in a set are not initialized by
.\"O .BR semget ().
.\"O or a
.\"O .B SETALL
.\"O operation on the semaphore set.
-¥»¥Þ¥Õ¥©½¸¹çÆâ¤Î¥»¥Þ¥Õ¥©¤Ï
+セマフォ集合内のセマフォは
.BR semget ()
-¤Ç¤Ï½é´ü²½¤µ¤ì¤Ê¤¤¡£
-.\" ¼ÂºÝ¤Ï Linux ¤Ç¤Ï¥»¥Þ¥Õ¥©¤Ï 0 ¤Ë½é´ü²½¤µ¤ì¤ë¤¬¡¢
-.\" POSIX.1-2001 ¤Ç¤Ï¤³¤¦¤Ê¤ë¤³¤È¤òµ¬Äꤷ¤Æ¤¤¤ëÌõ¤Ç¤Ï¤Ê¤¤¤Î¤Ç¡¢
-.\" °Ü¿¢¤ò¹Íθ¤¹¤ë¤È¤¤Ë¤Ï¤³¤ì¤òÁ°Äó¤Ë¤·¤Æ¤Ï¤¤¤±¤Ê¤¤¡£
-¤³¤Î¥»¥Þ¥Õ¥©¤ò½é´ü²½¤¹¤ë¤Ë¤Ï¡¢¥»¥Þ¥Õ¥©½¸¹ç¤ËÂФ·¤Æ
+では初期化されない。
+.\" 実際は Linux ではセマフォは 0 に初期化されるが、
+.\" POSIX.1-2001 ではこうなることを規定している訳ではないので、
+.\" 移植を考慮するときにはこれを前提にしてはいけない。
+このセマフォを初期化するには、セマフォ集合に対して
.BR semctl (2)
-¤ò»È¤Ã¤Æ
+を使って
.B SETVAL
-¤«
+か
.B SETALL
-Áàºî¤ò¼Â¹Ô¤¹¤ëɬÍפ¬¤¢¤ë¡£
+操作を実行する必要がある。
.\"O (Where multiple peers do not know who will be the first to
.\"O initialize the set, checking for a nonzero
.\"O .I sem_otime
.\"O .BR semctl (2)
.\"O .B IPC_STAT
.\"O operation can be used to avoid races.)
-(Ê£¿ô²Õ½ê¤«¤é¥»¥Þ¥Õ¥©½¸¹ç¤ÎÁàºî¤¬¹Ô¤ï¤ì¤ë¾ìÌ̤Ǥϡ¢
-郎ºÇ½é¤Ë½¸¹ç¤ò½é´ü²½¤¹¤ì¤Ð¤è¤¤¤«Ê¬¤«¤é¤Ê¤¤¡£
-¤³¤Î¾õ¶·¤òÈò¤±¤ë¤Ë¤Ï¡¢
+(複数箇所からセマフォ集合の操作が行われる場面では、
+誰が最初に集合を初期化すればよいか分からない。
+この状況を避けるには、
.BR semctl (2)
-¤Î
+の
.B IPC_STAT
-Áàºî¤Ç¼èÆÀ¤Ç¤¤ë¥»¥Þ¥Õ¥©¤Î¥Ç¡¼¥¿¹½Â¤ÂΤÎ
+操作で取得できるセマフォのデータ構造体の
.I sem_otime
-¤¬ 0 °Ê³°¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ì¤Ð¤è¤¤¡£)
+が 0 以外になっているかをチェックすればよい。)
.\"O .SH "SEE ALSO"
-.SH ´ØÏ¢¹àÌÜ
+.SH 関連項目
.BR semctl (2),
.BR semop (2),
.BR ftok (3),