OSDN Git Service

(split) LDP: Release pages for LDP v3.39.
[linuxjm/LDP_man-pages.git] / release / man2 / shmctl.2
index 11823f5..64f3b80 100644 (file)
 .\"    attaches to a segment that has already been marked for deletion.
 .\" 2005-08-02, mtk: Added IPC_INFO, SHM_INFO, SHM_STAT descriptions.
 .\"
-.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya
-.\"         all rights reserved.
-.\" Translated 1997-03-01, HANATAKA Shinya <hanataka@abyss.rim.or.jp>
-.\" Updated & Modified 2001-06-13, Yuichi SATO <ysato@h4.dion.ne.jp>
-.\" Updated & Modified 2005-01-05, Yuichi SATO <ysato444@yahoo.co.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
+.\"*******************************************************************
 .\"
-.\"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      機能検査マクロ
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.TH SHMCTL 2 2008-08-07 "Linux" "Linux Programmer's Manual"
+.\"*******************************************************************
+.TH SHMCTL 2 2008\-08\-07 Linux "Linux Programmer's Manual"
 .SH 名前
 shmctl \- 共有メモリ (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
-で指示した制御命令を実行する。
+\fBshmctl\fP()  は、識別子が \fIshmid\fP の共有メモリ・セグメントに対して \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
@@ -101,11 +78,8 @@ struct shmid_ds {
 .fi
 .in
 .PP
-.I ipc_perm
-構造体は \fI<sys/ipc.h>\fP で以下のように定義されている
-(強調されたフィールドは
-.B IPC_SET
-を使って設定可能である):
+\fIipc_perm\fP 構造体は \fI<sys/ipc.h>\fP で以下のように定義されている (強調されたフィールドは
+\fBIPC_SET\fP を使って設定可能である):
 .PP
 .in +4n
 .nf
@@ -122,71 +96,33 @@ struct ipc_perm {
 .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  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
-.B IPC_RMID
-セグメントに破棄済みのマークを付ける。
-セグメントは、実際には最後プロセスがセグメントを分離した (関連する
-.I shmid_ds
-構造体の
-.I shm_nattch
-メンバーが 0 になった) 後でのみ破棄される。
-呼び出し元は所有者か作成者であるか、特権を持たなければならない。
-セグメントに破棄のマークが付けられると、
-関連するデータ構造体において
-.I shm_perm.mode
-フィールドの (標準ではない)
-.B SHM_DEST
-フラグが設定される。
-このデータ構造体は
-.B IPC_STAT
-で取得される。
+.TP 
+\fBIPC_RMID\fP
+セグメントに破棄済みのマークを付ける。 セグメントは、実際には最後プロセスがセグメントを分離した (関連する \fIshmid_ds\fP 構造体の
+\fIshm_nattch\fP メンバーが 0 になった) 後でのみ破棄される。 呼び出し元は所有者か作成者であるか、特権を持たなければならない。
+セグメントに破棄のマークが付けられると、 関連するデータ構造体において \fIshm_perm.mode\fP フィールドの (標準ではない)
+\fBSHM_DEST\fP フラグが設定される。 このデータ構造体は \fBIPC_STAT\fP で取得される。
 .PP
-呼び出し元は最終的にはセグメントを忘れずに破棄\fIしなければならない\fP。
-そうでなれば、フォールト (fault) されたページは
-メモリかスワップ (swap) に残り続ける。
-.TP 10
-.BR IPC_INFO " (Linux 固有)"
-システム全体での共有メモリの制限とパラメータに関する情報を、
-.I buf
-が指す構造体に入れて返す。
-この構造体は
-.I shminfo
-型である (そのためキャストが必要である)。
-.I shminfo
-は
-.B _GNU_SOURCE
-機能検査マクロが定義された場合に
-.I <sys/shm.h>
-で以下のように定義される:
+呼び出し元は最終的にはセグメントを忘れずに破棄\fIしなければならない\fP。 そうでなれば、フォールト (fault) されたページは メモリかスワップ
+(swap) に残り続ける。
+.TP  10
+\fBIPC_INFO\fP (Linux 固有)
+システム全体での共有メモリの制限とパラメータに関する情報を、 \fIbuf\fP が指す構造体に入れて返す。 この構造体は \fIshminfo\fP 型である
+(そのためキャストが必要である)。 \fIshminfo\fP は \fB_GNU_SOURCE\fP 機能検査マクロが定義された場合に
+\fI<sys/shm.h>\fP で以下のように定義される:
 .nf
 .in +4n
 
@@ -204,27 +140,12 @@ struct  shminfo {
 
 .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
 
@@ -242,192 +163,88 @@ struct shm_info {
 };
 .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
+2.6.10 より前のカーネルでは、特権プロセスだけが \fBSHM_LOCK\fP と \fBSHM_UNLOCK\fP を利用することができた。 2.6.10
+以降のカーネルでは、非特権プロセスであっても次の条件を満たせば これらの操作を利用することができる。その条件とは、プロセスの実効 UID
+がそのセグメントの所有者もしくは作成者の UID と一致し、 (\fBSHM_LOCK\fP の場合には) ロックするメモリの合計が
+\fBRLIMIT_MEMLOCK\fP リソース上限 (\fBsetrlimit\fP(2)  参照) の範囲内に入っていることである。
 .SH 返り値
-.B IPC_INFO
-と
-.B SHM_INFO
-操作は、成功すると、全ての共有メモリセグメントに関する情報を
-管理しているカーネルの内部配列の使用中エントリのインデックスの
-うち最大値を返す
-(この情報は、システムの全ての共有メモリセグメントに関する情報を
-取得するために、
-.B SHM_STAT
-操作を繰り返し実行する際に使用できる)。
-.B SHM_STAT
-操作は、成功すると、
-.I shmid
-で指定されたインデックスを持つ共有メモリセグメントの識別子を返す。
-他の操作は、成功の場合 0 を返す。
+\fBIPC_INFO\fP と \fBSHM_INFO\fP 操作は、成功すると、全ての共有メモリセグメントに関する情報を
+管理しているカーネルの内部配列の使用中エントリのインデックスの うち最大値を返す (この情報は、システムの全ての共有メモリセグメントに関する情報を
+取得するために、 \fBSHM_STAT\fP 操作を繰り返し実行する際に使用できる)。 \fBSHM_STAT\fP 操作は、成功すると、 \fIshmid\fP
+で指定されたインデックスを持つ共有メモリセグメントの識別子を返す。 他の操作は、成功の場合 0 を返す。
 
-エラーの場合は \-1 を返し、
-.I errno
-を適切に設定する。
+エラーの場合は \-1 を返し、 \fIerrno\fP を適切に設定する。
 .SH エラー
-.TP
-.B EACCES
-
-\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
+.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
-.B EINVAL
-\fIshmid\fP が有効な識別子でないか、
-\fIcmd\fP が有効なコマンドでない。
-もしくは、
-.B SHM_STAT
-操作の場合に、
-.I shmid
+.TP 
+\fBEINVAL\fP
+\fIshmid\fP が有効な識別子でないか、 \fIcmd\fP が有効なコマンドでない。 もしくは、 \fBSHM_STAT\fP 操作の場合に、 \fIshmid\fP
 で指定されたインデックス値が現在未使用の配列のスロットを参照していた。
-.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
+.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
 ケーパビリティを持たない)。
 
-または (2.6.9 より前のカーネルで)
-.B SHM_LOCK
-または
-.B SHM_UNLOCK
-が指定されているが、プロセスが特権を持たない
-(Linux では
-.B CAP_IPC_LOCK
-ケーパビリティを持たない)。
-(Linux 2.6.9 以降では、
-.B RLIMIT_MEMLOCK
-が 0 で呼び出し元が特権を持たない場合にも、このエラーが起こる。)
+または (2.6.9 より前のカーネルで)  \fBSHM_LOCK\fP または \fBSHM_UNLOCK\fP が指定されているが、プロセスが特権を持たない
+(Linux では \fBCAP_IPC_LOCK\fP ケーパビリティを持たない)。 (Linux 2.6.9 以降では、
+\fBRLIMIT_MEMLOCK\fP が 0 で呼び出し元が特権を持たない場合にも、このエラーが起こる。)
 .SH 準拠
-SVr4, POSIX.1-2001.
-.\" SVr4 には他に EINVAL, ENOENT, ENOSPC, ENOMEM,
-.\" EEXIST エラーについての記述がある。
-.\" SVr4 および SVID には EIDRM エラーについての記述はない。
+.\" SVr4 documents additional error conditions EINVAL,
+.\" ENOENT, ENOSPC, ENOMEM, EEXIST.  Neither SVr4 nor SVID documents
+.\" an EIDRM error condition.
+SVr4, POSIX.1\-2001.
 .SH 注意
-.BR IPC_INFO ,
-.BR SHM_STAT ,
-.B SHM_INFO
-操作は、
-.BR ipcs (1)
-プログラムで割り当て済の資源に関する情報を提供するために
-使用されている。将来、これらの操作は変更されたり、
-/proc ファイルシステムのインタフェースに移動されるかもしれない。
+\fBIPC_INFO\fP, \fBSHM_STAT\fP, \fBSHM_INFO\fP 操作は、 \fBipcs\fP(1)
+プログラムで割り当て済の資源に関する情報を提供するために 使用されている。将来、これらの操作は変更されたり、 /proc
+ファイルシステムのインタフェースに移動されるかもしれない。
 
-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
-フラグで区別する。
+\fI構造体 shmid_ds\fP 内の多くのフィールドは、 Linux 2.2 では \fIshort\fP 型だったが、Linux 2.4 では
+\fIlong\fP 型になった。 この利点を生かすには、glibc\-2.1.91 以降の環境下で 再コンパイルすれば十分である。
+カーネルは新しい形式の呼び出しと古い形式の呼び出しを \fIcmd\fP 内の \fBIPC_64\fP フラグで区別する。
 .SH 関連項目
-.BR mlock (2),
-.BR setrlimit (2),
-.BR shmget (2),
-.BR shmop (2),
-.BR capabilities (7),
-.BR shm_overview (7),
-.BR svipc (7)
+\fBmlock\fP(2), \fBsetrlimit\fP(2), \fBshmget\fP(2), \fBshmop\fP(2), \fBcapabilities\fP(7),
+\fBshm_overview\fP(7), \fBsvipc\fP(7)