OSDN Git Service

長音記号の修正を release に反映
[linuxjm/LDP_man-pages.git] / release / man2 / shmctl.2
index d2f583b..7b4d4cf 100644 (file)
@@ -2,6 +2,7 @@
 .\" and Copyright 1993 Giorgio Ciucci <giorgio@crcc.it>
 .\" and Copyright 2004, 2005 Michael Kerrisk <mtk.manpages@gmail.com>
 .\"
+.\" %%%LICENSE_START(VERBATIM)
 .\" Permission is granted to make and distribute verbatim copies of this
 .\" manual provided the copyright notice and this permission notice are
 .\" preserved on all copies.
@@ -21,6 +22,7 @@
 .\"
 .\" Formatted or processed versions of this manual, if unaccompanied by
 .\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
 .\"
 .\" Modified 1993-07-28, Rik Faith <faith@cs.unc.edu>
 .\" Modified 1993-11-28, Giorgio Ciucci <giorgio@crcc.it>
 .\"    attaches to a segment that has already been marked for deletion.
 .\" 2005-08-02, mtk: Added IPC_INFO, SHM_INFO, SHM_STAT descriptions.
 .\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.\"
 .\" Japanese Version Copyright (c) 1997 HANATAKA Shinya
 .\"         all rights reserved.
 .\" Translated 1997-03-01, HANATAKA Shinya <hanataka@abyss.rim.or.jp>
 .\" Updated & Modified 2005-09-06, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
 .\" Updated & Modified 2005-10-08, Akihiro MOTOKI
 .\" Updated 2006-07-21, Akihiro MOTOKI, LDP v2.36
+.\" Updated 2013-05-06, Akihiro MOTOKI <amotoki@gmail.com>
 .\"
-.\"WORD:       shared memory           ¶¦Í­¥á¥â¥ê
-.\"WORD:       segment                 ¥»¥°¥á¥ó¥È
-.\"WORD:       owner                   ½êÍ­¼Ô
-.\"WORD:       group                   ¥°¥ë¡¼¥×
-.\"WORD:       creator                 ºîÀ®¼Ô
-.\"WORD:       super-user              ¥¹¡¼¥Ñ¡¼¡¦¥æ¡¼¥¶¡¼
-.\"WORD:       detach                  ʬΥ
-.\"WORD:       attach                  ÉÕ²Ã
-.\"WORD:       swap                    ¥¹¥ï¥Ã¥×
-.\"WORD:       identifier              ¼±ÊÌ»Ò
-.\"WORD:       member                  ¥á¥ó¥Ð¡¼
-.\"WORD:       feature test macro      µ¡Ç½¸¡ºº¥Þ¥¯¥í
-.\"
-.TH SHMCTL 2 2008-08-07 "Linux" "Linux Programmer's Manual"
-.SH Ì¾Á°
-shmctl \- ¶¦Í­¥á¥â¥ê (shared memory) ¤òÀ©¸æ¤¹¤ë
-.SH ½ñ¼°
+.TH SHMCTL 2 2014\-02\-07 Linux "Linux Programmer's Manual"
+.SH 名前
+shmctl \- System V 共有メモリー (shared memory) を制御する
+.SH 書式
 .ad l
-.B #include <sys/ipc.h>
+\fB#include <sys/ipc.h>\fP
 .br
-.B #include <sys/shm.h>
+\fB#include <sys/shm.h>\fP
 .sp
-.BI "int shmctl(int " shmid ", int " cmd ", struct shmid_ds *" buf );
+\fBint shmctl(int \fP\fIshmid\fP\fB, int \fP\fIcmd\fP\fB, struct shmid_ds *\fP\fIbuf\fP\fB);\fP
 .ad b
-.SH ÀâÌÀ
-.BR shmctl ()
-¤Ï¡¢¼±Ê̻Ҥ¬
-.I shmid
-¤Î¶¦Í­¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤ËÂФ·¤Æ
-.I cmd
-¤Ç»Ø¼¨¤·¤¿À©¸æÌ¿Îá¤ò¼Â¹Ô¤¹¤ë¡£
+.SH 説明
+\fBshmctl\fP()  は、識別子が \fIshmid\fP の System\ V 共有メモリーセグメントに対して \fIcmd\fP
+で指示した制御命令を実行する。
 .PP
-.I buf
-°ú¤­¿ô¤Ï¡¢ \fIshmid_ds\fP ¹½Â¤ÂΤؤΥݥ¤¥ó¥¿¤Ç¤¢¤ë¡£
-¤³¤Î¹½Â¤ÂΤϠ\fI<sys/shm.h>\fP ¤Ç°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë
+\fIbuf\fP 引き数は、 \fIshmid_ds\fP 構造体へのポインターである。 この構造体は \fI<sys/shm.h>\fP
+で以下のように定義されている
 .PP
 .in +4n
 .nf
 struct shmid_ds {
-    struct ipc_perm shm_perm;    /* ½êÍ­¸¢¤Èµö²Ä */
-    size_t          shm_segsz;   /* ¥»¥°¥á¥ó¥È¤Î¥µ¥¤¥º (¥Ð¥¤¥È) */
-    time_t          shm_atime;   /* ºÇ¸å¤ÎÉղà(attach) ¤Î»þ¹ï */
-    time_t          shm_dtime;   /* ºÇ¸å¤ÎʬΥ (detach) ¤Î»þ¹ï */
-    time_t          shm_ctime;   /* ºÇ¸å¤ËÊѹ¹¤¬¹Ô¤ï¤ì¤¿»þ¹ï */
-    pid_t           shm_cpid;    /* ºîÀ®¼Ô (creator) ¤Î PID */
-    pid_t           shm_lpid;    /* ºÇ¸å¤Î shmat(2)/shmdt(2) ¤Î PID */
-    shmatt_t        shm_nattch;  /* ¸½ºßÉղ䵤ì¤Æ¤¤¤ë¿ô */
+    struct ipc_perm shm_perm;    /* 所有権と許可 */
+    size_t          shm_segsz;   /* セグメントのサイズ (バイト) */
+    time_t          shm_atime;   /* 最後の付加 (attach) の時刻 */
+    time_t          shm_dtime;   /* 最後の分離 (detach) の時刻 */
+    time_t          shm_ctime;   /* 最後に変更が行われた時刻 */
+    pid_t           shm_cpid;    /* 作成者 (creator) の PID */
+    pid_t           shm_lpid;    /* 最後の shmat(2)/shmdt(2) の PID */
+    shmatt_t        shm_nattch;  /* 現在付加されている数 */
     ...
 };
 .fi
 .in
 .PP
-.I ipc_perm
-¹½Â¤ÂΤϠ\fI<sys/ipc.h>\fP ¤Ç°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë
-(¶¯Ä´¤µ¤ì¤¿¥Õ¥£¡¼¥ë¥É¤Ï
-.B IPC_SET
-¤ò»È¤Ã¤ÆÀßÄê²Äǽ¤Ç¤¢¤ë):
+\fIipc_perm\fP 構造体は以下のように定義されている (強調されたフィールドは \fBIPC_SET\fP を使って設定可能である):
 .PP
 .in +4n
 .nf
 struct ipc_perm {
-    key_t          __key;    /* shmget(2) ¤ËÍ¿¤¨¤é¤ì¤ë¥­¡¼ */
-    uid_t          \fBuid\fP;      /* ½êÍ­¼Ô¤Î¼Â¸ú UID */
-    gid_t          \fBgid\fP;      /* ½êÍ­¼Ô¤Î¼Â¸ú GID */
-    uid_t          cuid;     /* ºîÀ®¼Ô¤Î¼Â¸ú UID */
-    gid_t          cgid;     /* ºîÀ®¼Ô¤Î¼Â¸ú GID */
-    unsigned short \fBmode\fP;     /* \fBµö²Ä\fP + SHM_DEST ¤È
-                                SHM_LOCKED ¥Õ¥é¥° */
-    unsigned short __seq;    /* ¥·¡¼¥±¥ó¥¹ÈÖ¹æ */
+    key_t          __key;    /* shmget(2) ã\81«ä¸\8eã\81\88ã\82\89ã\82\8cã\82\8bã\82­ã\83¼ */
+    uid_t          \fBuid\fP;      /* 所有者の実効 UID */
+    gid_t          \fBgid\fP;      /* 所有者の実効 GID */
+    uid_t          cuid;     /* 作成者の実効 UID */
+    gid_t          cgid;     /* 作成者の実効 GID */
+    unsigned short \fBmode\fP;     /* \fB許可\fP + SHM_DEST と
+                                SHM_LOCKED ã\83\95ã\83©ã\82° */
+    unsigned short __seq;    /* シーケンス番号 */
 };
 .fi
 .in
 .PP
-.I cmd
-¤È¤·¤ÆÍ­¸ú¤ÊÃͤϰʲ¼¤ÎÄ̤ê:
+\fIcmd\fP として有効な値は以下の通り:
 .br
-.TP 10
-.B IPC_STAT
-.I shmid
-¤Ë´ØÏ¢¤Å¤±¤é¤ì¤¿¥«¡¼¥Í¥ë¥Ç¡¼¥¿¹½Â¤ÂΤξðÊó¤ò
-\fIbuf\fP ¤Ç»Ø¤µ¤ì¤¿
-.I shmid_ds
-¹½Â¤ÂΤ˥³¥Ô¡¼¤¹¤ë¡£
-¸Æ¤Ó½Ð¤·¸µ¤Ï¶¦Í­¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤ËÂФ¹¤ë
-Æɤ߹þ¤ßµö²Ä¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-.TP
-.B IPC_SET
-.I buf
-¤Ë¤è¤Ã¤Æ»Ø¤µ¤ì¤ë
-.I shmid_ds
-¹½Â¤ÂΤΤ¤¤¯¤Ä¤«¤Î¥á¥ó¥Ð¡¼¤ÎÃͤò¡¢
-¤³¤Î¶¦Í­¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤Ë´ØÏ¢¤Å¤±¤é¤ì¤¿¥«¡¼¥Í¥ë¥Ç¡¼¥¿¹½Â¤ÂΤ˽ñ¤­¹þ¤ß¡¢
-.I shm_ctime
-¥á¥ó¥Ð¡¼¤â¹¹¿·¤¹¤ë¡£
-°Ê²¼¤Î¥Õ¥£¡¼¥ë¥É¤ÏÊѹ¹¤Ç¤­¤ë¡£
-\fIshm_perm.uid\fP, \fIshm_perm.gid\fP,
-\fIshm_perm.mode\fP (¤ÎºÇ²¼°Ì 9 ¥Ó¥Ã¥È)¡£
-¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Î¼Â¸ú UID ¤¬½êÍ­¼Ô
-.RI ( shm_perm.uid )
-¤Þ¤¿¤ÏºîÀ®¼Ô
-.RI ( shm_perm.cuid )
-¤È°ìÃפ¹¤ë¤«¡¢¸Æ¤Ó½Ð¤·¸µ¤¬Æø¢¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-.TP
-.B IPC_RMID
-¥»¥°¥á¥ó¥È¤ËÇË´þºÑ¤ß¤Î¥Þ¡¼¥¯¤òÉÕ¤±¤ë¡£
-¥»¥°¥á¥ó¥È¤Ï¡¢¼ÂºÝ¤Ë¤ÏºÇ¸å¥×¥í¥»¥¹¤¬¥»¥°¥á¥ó¥È¤òʬΥ¤·¤¿ (´ØÏ¢¤¹¤ë
-.I shmid_ds
-¹½Â¤ÂΤÎ
-.I shm_nattch
-¥á¥ó¥Ð¡¼¤¬ 0 ¤Ë¤Ê¤Ã¤¿) ¸å¤Ç¤Î¤ßÇË´þ¤µ¤ì¤ë¡£
-¸Æ¤Ó½Ð¤·¸µ¤Ï½êÍ­¼Ô¤«ºîÀ®¼Ô¤Ç¤¢¤ë¤«¡¢Æø¢¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-¥»¥°¥á¥ó¥È¤ËÇË´þ¤Î¥Þ¡¼¥¯¤¬ÉÕ¤±¤é¤ì¤ë¤È¡¢
-´ØÏ¢¤¹¤ë¥Ç¡¼¥¿¹½Â¤ÂΤˤª¤¤¤Æ
-.I shm_perm.mode
-¥Õ¥£¡¼¥ë¥É¤Î (ɸ½à¤Ç¤Ï¤Ê¤¤)
-.B SHM_DEST
-¥Õ¥é¥°¤¬ÀßÄꤵ¤ì¤ë¡£
-¤³¤Î¥Ç¡¼¥¿¹½Â¤ÂΤÏ
-.B IPC_STAT
-¤Ç¼èÆÀ¤µ¤ì¤ë¡£
-.PP
-¸Æ¤Ó½Ð¤·¸µ¤ÏºÇ½ªÅª¤Ë¤Ï¥»¥°¥á¥ó¥È¤ò˺¤ì¤º¤ËÇË´þ\fI¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤\fP¡£
-¤½¤¦¤Ç¤Ê¤ì¤Ð¡¢¥Õ¥©¡¼¥ë¥È (fault) ¤µ¤ì¤¿¥Ú¡¼¥¸¤Ï
-¥á¥â¥ê¤«¥¹¥ï¥Ã¥× (swap) ¤Ë»Ä¤ê³¤±¤ë¡£
-.TP 10
-.BR IPC_INFO " (Linux ¸ÇÍ­)"
-¥·¥¹¥Æ¥àÁ´ÂΤǤζ¦Í­¥á¥â¥ê¤ÎÀ©¸Â¤È¥Ñ¥é¥á¡¼¥¿¤Ë´Ø¤¹¤ë¾ðÊó¤ò¡¢
-.I buf
-¤¬»Ø¤¹¹½Â¤ÂΤËÆþ¤ì¤ÆÊÖ¤¹¡£
-¤³¤Î¹½Â¤ÂΤÏ
-.I shminfo
-·¿¤Ç¤¢¤ë (¤½¤Î¤¿¤á¥­¥ã¥¹¥È¤¬É¬ÍפǤ¢¤ë)¡£
-.I shminfo
-¤Ï
-.B _GNU_SOURCE
-µ¡Ç½¸¡ºº¥Þ¥¯¥í¤¬ÄêµÁ¤µ¤ì¤¿¾ì¹ç¤Ë
-.I <sys/shm.h>
-¤Ç°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤ë:
+.TP  10
+\fBIPC_STAT\fP
+\fIshmid\fP に関連づけられたカーネルデータ構造体の情報を \fIbuf\fP で指された \fIshmid_ds\fP 構造体にコピーする。
+呼び出し元は共有メモリーセグメントに対する 読み込み許可を持たなければならない。
+.TP 
+\fBIPC_SET\fP
+\fIbuf\fP によって指される \fIshmid_ds\fP 構造体のいくつかのメンバーの値を、
+この共有メモリーセグメントに関連づけられたカーネルデータ構造体に書き込み、 \fIshm_ctime\fP メンバーも更新する。
+以下のフィールドは変更できる。 \fIshm_perm.uid\fP, \fIshm_perm.gid\fP, \fIshm_perm.mode\fP (の最下位 9
+ビット)。 呼び出したプロセスの実効 UID が所有者 (\fIshm_perm.uid\fP)  または作成者 (\fIshm_perm.cuid\fP)
+と一致するか、呼び出し元が特権を持たなければならない。
+.TP 
+\fBIPC_RMID\fP
+セグメントに破棄済みのマークを付ける。 セグメントは、実際には最後プロセスがセグメントを分離した (関連する \fIshmid_ds\fP 構造体の
+\fIshm_nattch\fP メンバーが 0 になった) 後でのみ破棄される。
+呼び出し元はそのセグメントの所有者か作成者であるか、特権を持たなければならない。 \fIbuf\fP 引き数は無視される。
+.IP
+セグメントに破棄のマークが付けられると、 関連するデータ構造体において \fIshm_perm.mode\fP フィールドの (標準ではない)
+\fBSHM_DEST\fP フラグが設定される。 このデータ構造体は \fBIPC_STAT\fP で取得される。
+.IP
+呼び出し元は最終的にはセグメントを忘れずに破棄\fIしなければならない\fP。 そうでなれば、フォールト (fault) されたページは メモリーかスワップ
+(swap) に残り続ける。
+.IP
+\fBproc\fP(5) の \fI/proc/sys/kernel/shm_rmid_forced\fP の説明も参照のこと。
+.TP  10
+\fBIPC_INFO\fP (Linux 固有)
+システム全体での共有メモリーの制限とパラメーターに関する情報を、 \fIbuf\fP が指す構造体に入れて返す。 この構造体は \fIshminfo\fP 型である
+(そのためキャストが必要である)。 \fIshminfo\fP は \fB_GNU_SOURCE\fP 機能検査マクロが定義された場合に
+\fI<sys/shm.h>\fP で以下のように定義される:
 .nf
 .in +4n
 
 struct  shminfo {
-    unsigned long shmmax; /* ºÇÂ祻¥°¥á¥ó¥È¥µ¥¤¥º */
-    unsigned long shmmin; /* ºÇ¾®¥»¥°¥á¥ó¥È¥µ¥¤¥º¡£
-                             ¾ï¤Ë 1 */
-    unsigned long shmmni; /* ºÇÂ祻¥°¥á¥ó¥È¿ô */
-    unsigned long shmseg; /* ¥×¥í¥»¥¹¤¬ÉղäǤ­¤ë
-                             ¥»¥°¥á¥ó¥È¤ÎºÇÂç¿ô¡£
-                             ¥«¡¼¥Í¥ëÆâ¤Ç¤Ï̤»ÈÍÑ */
-    unsigned long shmall; /* ¶¦Í­¥á¥â¥ê¤ÎºÇÂç¥Ú¡¼¥¸¿ô¡£
-                             ¥·¥¹¥Æ¥àÁ´ÂΤǤÎÃÍ */
+    unsigned long shmmax; /* æ\9c\80大ã\82»ã\82°ã\83¡ã\83³ã\83\88ã\82µã\82¤ã\82º */
+    unsigned long shmmin; /* 最小セグメントサイズ。
+                             常に 1 */
+    unsigned long shmmni; /* 最大セグメント数 */
+    unsigned long shmseg; /* プロセスが付加できる
+                             セグメントの最大数。
+                             カーネル内では未使用 */
+    unsigned long shmall; /* 共有メモリーの最大ページ数。
+                             システム全体での値 */
 };
 
 .in
 .fi
-ÀßÄê
-.IR shmmni ,
-.IR shmmax ,
-.I shmall
-¤Ï
-.I /proc
-¤Ë¤¢¤ëƱ¤¸Ì¾Á°¤Î¥Õ¥¡¥¤¥ë·Ðͳ¤ÇÊѹ¹²Äǽ¤Ç¤¢¤ë¡£
-¾Ü¤·¤¯¤Ï
-.BR proc (5)
-¤ò»²¾È¡£
-.TP
-.BR SHM_INFO " (Linux ¸ÇÍ­)"
-¶¦Í­¥á¥â¥ê¤¬¾ÃÈñ¤·¤Æ¤¤¤ë¥·¥¹¥Æ¥à»ñ¸»¤Ë´Ø¤¹¤ë¾ðÊó¤ò
-³ÊǼ¤·¤¿
-.I shm_info
-¹½Â¤ÂΤòÊÖ¤¹¡£
-¤³¤Î¹½Â¤ÂΤϡ¢
-.B _GNU_SOURCE
-µ¡Ç½¸¡ºº¥Þ¥¯¥í¤¬ÄêµÁ¤µ¤ì¤¿¾ì¹ç¤Ë
-.I <sys/shm.h>
-¤Ç°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤ë:
+設定 \fIshmmni\fP, \fIshmmax\fP, \fIshmall\fP は \fI/proc\fP にある同じ名前のファイル経由で変更可能である。 詳しくは
+\fBproc\fP(5)  を参照。
+.TP 
+\fBSHM_INFO\fP (Linux 固有)
+共有メモリーが消費しているシステム資源に関する情報を 格納した \fIshm_info\fP 構造体を返す。 この構造体は、 \fB_GNU_SOURCE\fP
+機能検査マクロが定義された場合に \fI<sys/shm.h>\fP で以下のように定義される:
 .nf
 .in +4n
 
 struct shm_info {
-    int           used_ids; /* ¸½ºß¸ºß¤¹¤ë¥»¥°¥á¥ó¥È¿ô */
-    unsigned long shm_tot;  /* ¶¦Í­¥á¥â¥ê¤Î¥Ú¡¼¥¸Áí¿ô */
-    unsigned long shm_rss;  /* ¥á¥â¥ê¾å¤Ë¤¢¤ë (¥¹¥ï¥Ã¥×¤µ¤ì¤Æ
-                               ¤¤¤Ê¤¤) ¶¦Í­¥á¥â¥ê¥Ú¡¼¥¸¿ô */
-    unsigned long shm_swp;  /* ¥¹¥ï¥Ã¥×¤µ¤ì¤Æ¤¤¤ë¶¦Í­¥á¥â¥ê
-                               ¥Ú¡¼¥¸¿ô */
+    int           used_ids; /* 現在存在するセグメント数 */
+    unsigned long shm_tot;  /* 共有メモリーのページ総数 */
+    unsigned long shm_rss;  /* メモリー上にある (スワップされて
+                               いない) 共有メモリーページ数 */
+    unsigned long shm_swp;  /* スワップされている共有メモリー
+                               ページ数 */
     unsigned long swap_attempts;
-                            /* Linux 2.4 °Ê¹ß¤Ç¤Ï̤»ÈÍÑ */
+                            /* Linux 2.4 以降では未使用 */
     unsigned long swap_successes;
-                            /* Linux 2.4 °Ê¹ß¤Ç¤Ï̤»ÈÍÑ */
+                            /* Linux 2.4 以降では未使用 */
 };
 .in
 .fi
-.TP
-.BR SHM_STAT " (Linux ¸ÇÍ­)"
-.B IPC_STAT
-¤ÈƱ¤¸¤¯
-.I shmid_ds
-¹½Â¤ÂΤòÊÖ¤¹¡£
-⤷¡¢
-.I shmid
-°ú¤­¿ô¤Ï¡¢¥»¥°¥á¥ó¥È¼±Ê̻ҤǤϤʤ¯¡¢¥·¥¹¥Æ¥à¾å¤ÎÁ´¤Æ¤Î¶¦Í­¥á¥â¥ê
-¥»¥°¥á¥ó¥È¤Ë´Ø¤¹¤ë¾ðÊó¤ò´ÉÍý¤¹¤ë¥«¡¼¥Í¥ë¤ÎÆâÉôÇÛÎó¤Ø¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹
-¤Ç¤¢¤ë¡£
+.TP 
+\fBSHM_STAT\fP (Linux 固有)
+\fBIPC_STAT\fP と同じく \fIshmid_ds\fP 構造体を返す。 但し、 \fIshmid\fP
+引き数は、セグメント識別子ではなく、システム上の全ての共有メモリー セグメントに関する情報を管理するカーネルの内部配列へのインデックス である。
 .PP
-¸Æ¤Ó½Ð¤·¸µ¤Ï¡¢\fIcmd\fP ¤Ë°Ê²¼¤ÎÃͤò»ØÄꤹ¤ë¤³¤È¤Ç¡¢¶¦Í­¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤¬
-¥¹¥ï¥Ã¥×¤µ¤ì¤ë¤³¤È¤òËɻߤ·¤¿¤ê¡¢µö²Ä¤·¤¿¤ê¤Ç¤­¤ë:
+呼び出し元は、\fIcmd\fP に以下の値を指定することで、共有メモリーセグメントが スワップされることを防止したり、許可したりできる:
 .br
-.TP 10
-.BR SHM_LOCK " (Linux ¸ÇÍ­)"
-¶¦Í­¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤ò¥¹¥ï¥Ã¥×¤¹¤ë¤³¤È¤òËɻߤ¹¤ë¡£
-¥í¥Ã¥¯¤¬Í­¸ú¤Ë¤Ê¤Ã¤¿¸å¡¢¸Æ¤Ó½Ð¤·¸µ¤Ï¡¢
-¸ºß¤¹¤ë¤³¤È¤¬Í׵ᤵ¤ì¤¿Á´¤Æ¤Î¥Ú¡¼¥¸¤ò¥Õ¥©¡¼¥ë¥È¤µ¤»¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-¥»¥°¥á¥ó¥È¤¬¥í¥Ã¥¯¤µ¤ì¤ë¤È¡¢
-´ØÏ¢¤¹¤ë¥Ç¡¼¥¿¹½Â¤ÂΤˤª¤¤¤Æ
-.I shm_perm.mode
-¥Õ¥£¡¼¥ë¥É¤Î (ɸ½àŪ¤Ç¤Ï¤Ê¤¤)
-.B SHM_LOCKED
-¥Õ¥é¥°¤¬ÀßÄꤵ¤ì¤ë¡£
-¤³¤Î¥Ç¡¼¥¿¹½Â¤ÂΤÏ
-.B IPC_STAT
-¤Ç¼èÆÀ¤µ¤ì¤ë¡£
-.TP
-.BR SHM_UNLOCK " (Linux ¸ÇÍ­)"
-¥»¥°¥á¥ó¥È¤Î¥í¥Ã¥¯¤ò²ò½ü¤·¡¢¥¹¥ï¥Ã¥×¡¦¥¢¥¦¥È¤¹¤ë¤³¤È¤ò²Äǽ¤Ë¤¹¤ë¡£
+.TP  10
+\fBSHM_LOCK\fP (Linux 固有)
+共有メモリーセグメントをスワップすることを防止する。 ロックが有効になった後、呼び出し元は、
+存在することが要求された全てのページをフォールトさせなければならない。 セグメントがロックされると、 関連するデータ構造体において
+\fIshm_perm.mode\fP フィールドの (標準的ではない)  \fBSHM_LOCKED\fP フラグが設定される。 このデータ構造体は
+\fBIPC_STAT\fP で取得される。
+.TP 
+\fBSHM_UNLOCK\fP (Linux 固有)
+セグメントのロックを解除し、スワップアウトすることを可能にする。
 .PP
-2.6.10 ¤è¤êÁ°¤Î¥«¡¼¥Í¥ë¤Ç¤Ï¡¢Æø¢¥×¥í¥»¥¹¤À¤±¤¬
-.B SHM_LOCK
-¤È
-.B SHM_UNLOCK
-¤òÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤¿¡£
-2.6.10 °Ê¹ß¤Î¥«¡¼¥Í¥ë¤Ç¤Ï¡¢ÈóÆø¢¥×¥í¥»¥¹¤Ç¤¢¤Ã¤Æ¤â¼¡¤Î¾ò·ï¤òËþ¤¿¤»¤Ð
-¤³¤ì¤é¤ÎÁàºî¤òÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£¤½¤Î¾ò·ï¤È¤Ï¡¢¥×¥í¥»¥¹¤Î¼Â¸ú UID
-¤¬¤½¤Î¥»¥°¥á¥ó¥È¤Î½êÍ­¼Ô¤â¤·¤¯¤ÏºîÀ®¼Ô¤Î UID ¤È°ìÃפ·¡¢
-.RB ( SHM_LOCK
-¤Î¾ì¹ç¤Ë¤Ï) ¥í¥Ã¥¯¤¹¤ë¥á¥â¥ê¤Î¹ç·×¤¬
-.B RLIMIT_MEMLOCK
-¥ê¥½¡¼¥¹¾å¸Â
-.RB ( setrlimit (2)
-»²¾È) ¤ÎÈÏ°ÏÆâ¤ËÆþ¤Ã¤Æ¤¤¤ë¤³¤È¤Ç¤¢¤ë¡£
 .\" There was some weirdness in 2.6.9: SHM_LOCK and SHM_UNLOCK could
 .\" be applied to a segment, regardless of ownership of the segment.
 .\" This was a botch-up in the move to RLIMIT_MEMLOCK, and was fixed
 .\" in 2.6.10.  MTK, May 2005
-.SH ÊÖ¤êÃÍ
-.B IPC_INFO
-¤È
-.B SHM_INFO
-Áàºî¤Ï¡¢À®¸ù¤¹¤ë¤È¡¢Á´¤Æ¤Î¶¦Í­¥á¥â¥ê¥»¥°¥á¥ó¥È¤Ë´Ø¤¹¤ë¾ðÊó¤ò
-´ÉÍý¤·¤Æ¤¤¤ë¥«¡¼¥Í¥ë¤ÎÆâÉôÇÛÎó¤Î»ÈÍÑÃ楨¥ó¥È¥ê¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Î
-¤¦¤ÁºÇÂçÃͤòÊÖ¤¹
-(¤³¤Î¾ðÊó¤Ï¡¢¥·¥¹¥Æ¥à¤ÎÁ´¤Æ¤Î¶¦Í­¥á¥â¥ê¥»¥°¥á¥ó¥È¤Ë´Ø¤¹¤ë¾ðÊó¤ò
-¼èÆÀ¤¹¤ë¤¿¤á¤Ë¡¢
-.B SHM_STAT
-Áàºî¤ò·«¤êÊÖ¤·¼Â¹Ô¤¹¤ëºÝ¤Ë»ÈÍѤǤ­¤ë)¡£
-.B SHM_STAT
-Áàºî¤Ï¡¢À®¸ù¤¹¤ë¤È¡¢
-.I shmid
-¤Ç»ØÄꤵ¤ì¤¿¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»ý¤Ä¶¦Í­¥á¥â¥ê¥»¥°¥á¥ó¥È¤Î¼±Ê̻ҤòÊÖ¤¹¡£
-¾¤ÎÁàºî¤Ï¡¢À®¸ù¤Î¾ì¹ç 0 ¤òÊÖ¤¹¡£
+2.6.10 より前のカーネルでは、特権プロセスだけが \fBSHM_LOCK\fP と \fBSHM_UNLOCK\fP を利用することができた。 2.6.10
+以降のカーネルでは、非特権プロセスであっても次の条件を満たせば これらの操作を利用することができる。その条件とは、プロセスの実効 UID
+がそのセグメントの所有者もしくは作成者の UID と一致し、 (\fBSHM_LOCK\fP の場合には) ロックするメモリーの合計が
+\fBRLIMIT_MEMLOCK\fP リソース上限 (\fBsetrlimit\fP(2)  参照) の範囲内に入っていることである。
+.SH 返り値
+\fBIPC_INFO\fP と \fBSHM_INFO\fP 操作は、成功すると、全ての共有メモリーセグメントに関する情報を
+管理しているカーネルの内部配列の使用中エントリーのインデックスの うち最大値を返す (この情報は、システムの全ての共有メモリーセグメントに関する情報を
+取得するために、 \fBSHM_STAT\fP 操作を繰り返し実行する際に使用できる)。 \fBSHM_STAT\fP 操作は、成功すると、 \fIshmid\fP
+で指定されたインデックスを持つ共有メモリーセグメントの識別子を返す。 他の操作は、成功の場合 0 を返す。
 
-¥¨¥é¡¼¤Î¾ì¹ç¤Ï \-1 ¤òÊÖ¤·¡¢
-.I errno
-¤òŬÀÚ¤ËÀßÄꤹ¤ë¡£
-.SH ¥¨¥é¡¼
-.TP
-.B EACCES
+エラーの場合は \-1 を返し、 \fIerrno\fP を適切に設定する。
+.SH エラー
+.TP 
+\fBEACCES\fP
+\fBIPC_STAT\fP または \fBSHM_STAT\fP が要求され、 \fIshm_perm.mode\fP が \fIshmid\fP
+への読み込みアクセスを許しておらず、 かつ呼び出したプロセスが \fBCAP_IPC_OWNER\fP ケーパビリティ (capability)
+を持っていない。
+.TP 
+\fBEFAULT\fP
+\fIcmd\fP 引き数に \fBIPC_SET\fP か \fBIPC_STAT\fP が指定されたが \fIbuf\fP で指されているアドレスにアクセスできない。
+.TP 
+\fBEIDRM\fP
+\fIshmid\fP が削除 (remove) された識別子 (identifier) を指している。
+.TP 
+\fBEINVAL\fP
+\fIshmid\fP が有効な識別子でないか、 \fIcmd\fP が有効なコマンドでない。 もしくは、 \fBSHM_STAT\fP 操作の場合に、 \fIshmid\fP
+で指定されたインデックス値が現在未使用の配列のスロットを参照していた。
+.TP 
+\fBENOMEM\fP
+(2.6.9 以降のカーネルにおいて)  \fBSHM_LOCK\fP が指定され、 ロックされる予定のセグメントのサイズ
+(ロックされる共有メモリーセグメントの合計バイト数) が、 呼び出したプロセスの実ユーザー ID についての制限を超えた。 この制限は
+\fBRLIMIT_MEMLOCK\fP ソフト資源制限で定義される (\fBsetrlimit\fP(2)  を参照)。
+.TP 
+\fBEOVERFLOW\fP
+\fBIPC_STAT\fP が試みられ、GID や UID の値が \fIbuf\fP で指示される構造体に格納するには大き過ぎる。
+.TP 
+\fBEPERM\fP
+\fBIPC_SET\fP か \fBIPC_RMID\fP が試みられ、 呼び出したプロセスの実効ユーザー ID が作成者 (\fIshm_perm.cuid\fP)
+でも所有者 (\fIshm_perm.uid\fP)  でもなく、プロセスが特権を持たない (Linux では \fBCAP_SYS_ADMIN\fP
+ケーパビリティを持たない)。
 
-\fBIPC_STAT\fP ¤Þ¤¿¤Ï \fBSHM_STAT\fP ¤¬Í׵ᤵ¤ì¡¢
-\fIshm_perm.mode\fP ¤¬
-.I shmid
-¤Ø¤ÎÆɤ߹þ¤ß¥¢¥¯¥»¥¹¤òµö¤·¤Æ¤ª¤é¤º¡¢
-¤«¤Ä¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤¬
-.B CAP_IPC_OWNER
-¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£ (capability) ¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£
-.TP
-.B EFAULT
-.I cmd
-°ú¤­¿ô¤Ë
-.B IPC_SET
-¤«
-.B IPC_STAT
-¤¬»ØÄꤵ¤ì¤¿¤¬
-.I buf
-¤Ç»Ø¤µ¤ì¤Æ¤¤¤ë¥¢¥É¥ì¥¹¤Ë¥¢¥¯¥»¥¹¤Ç¤­¤Ê¤¤¡£
-.TP
-.B EIDRM
-\fIshmid\fP ¤¬ºï½ü (remove) ¤µ¤ì¤¿¼±Ê̻Ҡ(identifier) ¤ò»Ø¤·¤Æ¤¤¤ë¡£
-.TP
-.B EINVAL
-\fIshmid\fP ¤¬Í­¸ú¤Ê¼±Ê̻ҤǤʤ¤¤«¡¢
-\fIcmd\fP ¤¬Í­¸ú¤Ê¥³¥Þ¥ó¥É¤Ç¤Ê¤¤¡£
-¤â¤·¤¯¤Ï¡¢
-.B SHM_STAT
-Áàºî¤Î¾ì¹ç¤Ë¡¢
-.I shmid
-¤Ç»ØÄꤵ¤ì¤¿¥¤¥ó¥Ç¥Ã¥¯¥¹Ãͤ¬¸½ºß̤»ÈÍѤÎÇÛÎó¤Î¥¹¥í¥Ã¥È¤ò»²¾È¤·¤Æ¤¤¤¿¡£
-.TP
-.B ENOMEM
-(2.6.9 °Ê¹ß¤Î¥«¡¼¥Í¥ë¤Ë¤ª¤¤¤Æ)
-.B SHM_LOCK
-¤¬»ØÄꤵ¤ì¡¢
-¥í¥Ã¥¯¤µ¤ì¤ëͽÄê¤Î¥»¥°¥á¥ó¥È¤Î¥µ¥¤¥º
-(¥í¥Ã¥¯¤µ¤ì¤ë¶¦Í­¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤Î¹ç·×¥Ð¥¤¥È¿ô) ¤¬¡¢
-¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Î¼Â¥æ¡¼¥¶¡¼ ID ¤Ë¤Ä¤¤¤Æ¤ÎÀ©¸Â¤òĶ¤¨¤¿¡£
-¤³¤ÎÀ©¸Â¤Ï
-.B RLIMIT_MEMLOCK
-¥½¥Õ¥È»ñ¸»À©¸Â¤ÇÄêµÁ¤µ¤ì¤ë
-.RB ( setrlimit (2)
-¤ò»²¾È)¡£
-.TP
-.B EOVERFLOW
-\fBIPC_STAT\fP ¤¬»î¤ß¤é¤ì¡¢GID ¤ä UID ¤ÎÃͤ¬
-.I buf
-¤Ç»Ø¼¨¤µ¤ì¤ë¹½Â¤ÂΤ˳ÊǼ¤¹¤ë¤Ë¤ÏÂ礭²á¤®¤ë¡£
-.TP
-.B EPERM
-\fBIPC_SET\fP ¤« \fBIPC_RMID\fP ¤¬»î¤ß¤é¤ì¡¢
-¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Î¼Â¸ú¥æ¡¼¥¶¡¼ ID ¤¬ºîÀ®¼Ô
-.RI ( shm_perm.cuid )
-¤Ç¤â½êÍ­¼Ô
-.RI ( shm_perm.uid )
-¤Ç¤â¤Ê¤¯¡¢¥×¥í¥»¥¹¤¬Æø¢¤ò»ý¤¿¤Ê¤¤ (Linux ¤Ç¤Ï
-.B CAP_SYS_ADMIN
-¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£¤ò»ý¤¿¤Ê¤¤)¡£
+または (2.6.9 より前のカーネルで)  \fBSHM_LOCK\fP または \fBSHM_UNLOCK\fP が指定されているが、プロセスが特権を持たない
+(Linux では \fBCAP_IPC_LOCK\fP ケーパビリティを持たない)。 (Linux 2.6.9 以降では、
+\fBRLIMIT_MEMLOCK\fP が 0 で呼び出し元が特権を持たない場合にも、このエラーが起こる。)
+.SH 準拠
+.\" SVr4 documents additional error conditions EINVAL,
+.\" ENOENT, ENOSPC, ENOMEM, EEXIST.  Neither SVr4 nor SVID documents
+.\" an EIDRM error condition.
+SVr4, POSIX.1\-2001.
+.SH 注意
+.\" Like Linux, the FreeBSD man pages still document
+.\" the inclusion of these header files.
+Linux や POSIX の全てのバージョンでは、 \fI<sys/types.h>\fP と \fI<sys/ipc.h>\fP
+のインクルードは必要ない。しかしながら、いくつかの古い実装ではこれらのヘッダーファイルのインクルードが必要であり、 SVID
+でもこれらのインクルードをするように記載されている。このような古いシステムへの移植性を意図したアプリケーションではこれらのファイルをインクルードする必要があるかもしれない。
 
-¤Þ¤¿¤Ï (2.6.9 ¤è¤êÁ°¤Î¥«¡¼¥Í¥ë¤Ç)
-.B SHM_LOCK
-¤Þ¤¿¤Ï
-.B SHM_UNLOCK
-¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¤¬¡¢¥×¥í¥»¥¹¤¬Æø¢¤ò»ý¤¿¤Ê¤¤
-(Linux ¤Ç¤Ï
-.B CAP_IPC_LOCK
-¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£¤ò»ý¤¿¤Ê¤¤)¡£
-(Linux 2.6.9 °Ê¹ß¤Ç¤Ï¡¢
-.B RLIMIT_MEMLOCK
-¤¬ 0 ¤Ç¸Æ¤Ó½Ð¤·¸µ¤¬Æø¢¤ò»ý¤¿¤Ê¤¤¾ì¹ç¤Ë¤â¡¢¤³¤Î¥¨¥é¡¼¤¬µ¯¤³¤ë¡£)
-.SH ½àµò
-SVr4, POSIX.1-2001.
-.\" SVr4 ¤Ë¤Ï¾¤Ë EINVAL, ENOENT, ENOSPC, ENOMEM,
-.\" EEXIST ¥¨¥é¡¼¤Ë¤Ä¤¤¤Æ¤Îµ­½Ò¤¬¤¢¤ë¡£
-.\" SVr4 ¤ª¤è¤Ó SVID ¤Ë¤Ï EIDRM ¥¨¥é¡¼¤Ë¤Ä¤¤¤Æ¤Îµ­½Ò¤Ï¤Ê¤¤¡£
-.SH Ãí°Õ
-.BR IPC_INFO ,
-.BR SHM_STAT ,
-.B SHM_INFO
-Áàºî¤Ï¡¢
-.BR ipcs (8)
-¥×¥í¥°¥é¥à¤Ç³ä¤êÅö¤ÆºÑ¤Î»ñ¸»¤Ë´Ø¤¹¤ë¾ðÊó¤òÄ󶡤¹¤ë¤¿¤á¤Ë
-»ÈÍѤµ¤ì¤Æ¤¤¤ë¡£¾­Íè¡¢¤³¤ì¤é¤ÎÁàºî¤ÏÊѹ¹¤µ¤ì¤¿¤ê¡¢
-/proc ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ë°ÜÆ°¤µ¤ì¤ë¤«¤â¤·¤ì¤Ê¤¤¡£
+\fBIPC_INFO\fP, \fBSHM_STAT\fP, \fBSHM_INFO\fP 操作は、 \fBipcs\fP(1)
+プログラムで割り当て済の資源に関する情報を提供するために 使用されている。将来、これらの操作は変更されたり、 \fI/proc\fP
+ファイルシステムのインターフェースに移動されるかもしれない。
 
-Linux ¤Ç¤Ï¡¢
-.I shmctl(IPC_RMID)
-¤ò»È¤Ã¤Æ¤¹¤Ç¤Ëºï½ü¥Þ¡¼¥¯¤¬¤Ä¤±¤é¤ì¤Æ¤¤¤ë¶¦Í­¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤ò
-¤¢¤ë¥×¥í¥»¥¹¤¬Éղà(attach)
-.RB ( shmat (2))
-¤¹¤ë¤³¤È¤òµö²Ä¤·¤Æ¤¤¤ë¡£
-¤³¤Îµ¡Ç½¤Ï¾¤Î Unix ¤Î¼ÂÁõ¤Ç¤ÏÍøÍѤǤ­¤Ê¤¤¡£
-°Ü¿¢À­¤ò¹Íθ¤·¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï¤³¤ì¤Ë°Í¸¤·¤Ê¤¤¤è¤¦¤Ë¤¹¤Ù¤­¤Ç¤¢¤ë¡£
+Linux では、 \fIshmctl(IPC_RMID)\fP を使ってすでに削除マークがつけられている共有メモリーセグメントを あるプロセスが付加
+(attach)  (\fBshmat\fP(2))  することを許可している。 この機能は他の UNIX の実装では利用できない。
+移植性を考慮したアプリケーションではこれに依存しないようにすべきである。
 
-\fI¹½Â¤ÂΠshmid_ds\fP Æâ¤Î¿¤¯¤Î¥Õ¥£¡¼¥ë¥É¤Ï¡¢
-Linux 2.2 ¤Ç¤Ï
-.I short
-·¿¤À¤Ã¤¿¤¬¡¢Linux 2.4 ¤Ç¤Ï
-.I long
-·¿¤Ë¤Ê¤Ã¤¿¡£
-¤³¤ÎÍøÅÀ¤òÀ¸¤«¤¹¤Ë¤Ï¡¢glibc-2.1.91 °Ê¹ß¤Î´Ä¶­²¼¤Ç
-ºÆ¥³¥ó¥Ñ¥¤¥ë¤¹¤ì¤Ð½½Ê¬¤Ç¤¢¤ë¡£
-¥«¡¼¥Í¥ë¤Ï¿·¤·¤¤·Á¼°¤Î¸Æ¤Ó½Ð¤·¤È¸Å¤¤·Á¼°¤Î¸Æ¤Ó½Ð¤·¤ò
-.I cmd
-Æâ¤Î
-.B IPC_64
-¥Õ¥é¥°¤Ç¶èÊ̤¹¤ë¡£
-.SH ´ØÏ¢¹àÌÜ
-.BR mlock (2),
-.BR setrlimit (2),
-.BR shmget (2),
-.BR shmop (2),
-.BR capabilities (7),
-.BR shm_overview (7),
-.BR svipc (7)
+\fI構造体 shmid_ds\fP 内の多くのフィールドは、 Linux 2.2 では \fIshort\fP 型だったが、Linux 2.4 では
+\fIlong\fP 型になった。 この利点を生かすには、glibc\-2.1.91 以降の環境下で 再コンパイルすれば十分である。
+カーネルは新しい形式の呼び出しと古い形式の呼び出しを \fIcmd\fP 内の \fBIPC_64\fP フラグで区別する。
+.SH 関連項目
+\fBmlock\fP(2), \fBsetrlimit\fP(2), \fBshmget\fP(2), \fBshmop\fP(2), \fBcapabilities\fP(7),
+\fBshm_overview\fP(7), \fBsvipc\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.78 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。