.\"
.TH SHMCTL 2 2014\-02\-07 Linux "Linux Programmer's Manual"
.SH 名前
-shmctl \- System V 共有メモリ (shared memory) を制御する
+shmctl \- System V 共有メモリー (shared memory) を制御する
.SH 書式
.ad l
\fB#include <sys/ipc.h>\fP
\fBint shmctl(int \fP\fIshmid\fP\fB, int \fP\fIcmd\fP\fB, struct shmid_ds *\fP\fIbuf\fP\fB);\fP
.ad b
.SH 説明
-\fBshmctl\fP() ã\81¯ã\80\81è\98å\88¥å\90ã\81\8c \fIshmid\fP ã\81® System\ V å\85±æ\9c\89ã\83¡ã\83¢ã\83ªã\83»セグメントに対して \fIcmd\fP
+\fBshmctl\fP() ã\81¯ã\80\81è\98å\88¥å\90ã\81\8c \fIshmid\fP ã\81® System\ V å\85±æ\9c\89ã\83¡ã\83¢ã\83ªã\83¼セグメントに対して \fIcmd\fP
で指示した制御命令を実行する。
.PP
-\fIbuf\fP 引き数は、 \fIshmid_ds\fP 構造体へのポインタである。 この構造体は \fI<sys/shm.h>\fP
+\fIbuf\fP å¼\95ã\81\8dæ\95°ã\81¯ã\80\81 \fIshmid_ds\fP æ§\8bé\80 ä½\93ã\81¸ã\81®ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\81§ã\81\82ã\82\8bã\80\82 ã\81\93ã\81®æ§\8bé\80 ä½\93ã\81¯ \fI<sys/shm.h>\fP
で以下のように定義されている
.PP
.in +4n
.TP 10
\fBIPC_STAT\fP
\fIshmid\fP に関連づけられたカーネルデータ構造体の情報を \fIbuf\fP で指された \fIshmid_ds\fP 構造体にコピーする。
-å\91¼ã\81³å\87ºã\81\97å\85\83ã\81¯å\85±æ\9c\89ã\83¡ã\83¢ã\83ªã\83»セグメントに対する 読み込み許可を持たなければならない。
+å\91¼ã\81³å\87ºã\81\97å\85\83ã\81¯å\85±æ\9c\89ã\83¡ã\83¢ã\83ªã\83¼セグメントに対する 読み込み許可を持たなければならない。
.TP
\fBIPC_SET\fP
\fIbuf\fP によって指される \fIshmid_ds\fP 構造体のいくつかのメンバーの値を、
-ã\81\93ã\81®å\85±æ\9c\89ã\83¡ã\83¢ã\83ªã\83»セグメントに関連づけられたカーネルデータ構造体に書き込み、 \fIshm_ctime\fP メンバーも更新する。
+ã\81\93ã\81®å\85±æ\9c\89ã\83¡ã\83¢ã\83ªã\83¼セグメントに関連づけられたカーネルデータ構造体に書き込み、 \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)
と一致するか、呼び出し元が特権を持たなければならない。
セグメントに破棄のマークが付けられると、 関連するデータ構造体において \fIshm_perm.mode\fP フィールドの (標準ではない)
\fBSHM_DEST\fP フラグが設定される。 このデータ構造体は \fBIPC_STAT\fP で取得される。
.IP
-呼び出し元は最終的にはセグメントを忘れずに破棄\fIしなければならない\fP。 そうでなれば、フォールト (fault) されたページは メモリかスワップ
+å\91¼ã\81³å\87ºã\81\97å\85\83ã\81¯æ\9c\80çµ\82ç\9a\84ã\81«ã\81¯ã\82»ã\82°ã\83¡ã\83³ã\83\88ã\82\92å¿\98ã\82\8cã\81\9aã\81«ç ´æ£\84\fIã\81\97ã\81ªã\81\91ã\82\8cã\81°ã\81ªã\82\89ã\81ªã\81\84\fPã\80\82 ã\81\9dã\81\86ã\81§ã\81ªã\82\8cã\81°ã\80\81ã\83\95ã\82©ã\83¼ã\83«ã\83\88 (fault) ã\81\95ã\82\8cã\81\9fã\83\9aã\83¼ã\82¸ã\81¯ ã\83¡ã\83¢ã\83ªã\83¼ã\81\8bã\82¹ã\83¯ã\83\83ã\83\97
(swap) に残り続ける。
.IP
\fBproc\fP(5) の \fI/proc/sys/kernel/shm_rmid_forced\fP の説明も参照のこと。
.TP 10
\fBIPC_INFO\fP (Linux 固有)
-ã\82·ã\82¹ã\83\86ã\83 å\85¨ä½\93ã\81§ã\81®å\85±æ\9c\89ã\83¡ã\83¢ã\83ªã\81®å\88¶é\99\90ã\81¨ã\83\91ã\83©ã\83¡ã\83¼ã\82¿に関する情報を、 \fIbuf\fP が指す構造体に入れて返す。 この構造体は \fIshminfo\fP 型である
+ã\82·ã\82¹ã\83\86ã\83 å\85¨ä½\93ã\81§ã\81®å\85±æ\9c\89ã\83¡ã\83¢ã\83ªã\83¼ã\81®å\88¶é\99\90ã\81¨ã\83\91ã\83©ã\83¡ã\83¼ã\82¿ã\83¼に関する情報を、 \fIbuf\fP が指す構造体に入れて返す。 この構造体は \fIshminfo\fP 型である
(そのためキャストが必要である)。 \fIshminfo\fP は \fB_GNU_SOURCE\fP 機能検査マクロが定義された場合に
\fI<sys/shm.h>\fP で以下のように定義される:
.nf
unsigned long shmseg; /* プロセスが付加できる
セグメントの最大数。
カーネル内では未使用 */
- unsigned long shmall; /* 共有メモリの最大ページ数。
+ unsigned long shmall; /* å\85±æ\9c\89ã\83¡ã\83¢ã\83ªã\83¼ã\81®æ\9c\80大ã\83\9aã\83¼ã\82¸æ\95°ã\80\82
システム全体での値 */
};
\fBproc\fP(5) を参照。
.TP
\fBSHM_INFO\fP (Linux 固有)
-共有メモリが消費しているシステム資源に関する情報を 格納した \fIshm_info\fP 構造体を返す。 この構造体は、 \fB_GNU_SOURCE\fP
+å\85±æ\9c\89ã\83¡ã\83¢ã\83ªã\83¼ã\81\8cæ¶\88è²»ã\81\97ã\81¦ã\81\84ã\82\8bã\82·ã\82¹ã\83\86ã\83 è³\87æº\90ã\81«é\96¢ã\81\99ã\82\8bæ\83\85å ±ã\82\92 æ ¼ç´\8dã\81\97ã\81\9f \fIshm_info\fP æ§\8bé\80 ä½\93ã\82\92è¿\94ã\81\99ã\80\82 ã\81\93ã\81®æ§\8bé\80 ä½\93ã\81¯ã\80\81 \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; /* スワップされている共有メモリ
+ unsigned long shm_tot; /* å\85±æ\9c\89ã\83¡ã\83¢ã\83ªã\83¼ã\81®ã\83\9aã\83¼ã\82¸ç·\8fæ\95° */
+ unsigned long shm_rss; /* メモリー上にある (スワップされて
+ ã\81\84ã\81ªã\81\84) å\85±æ\9c\89ã\83¡ã\83¢ã\83ªã\83¼ã\83\9aã\83¼ã\82¸æ\95° */
+ unsigned long shm_swp; /* スワップされている共有メモリー
ページ数 */
unsigned long swap_attempts;
/* Linux 2.4 以降では未使用 */
.TP
\fBSHM_STAT\fP (Linux 固有)
\fBIPC_STAT\fP と同じく \fIshmid_ds\fP 構造体を返す。 但し、 \fIshmid\fP
-引き数は、セグメント識別子ではなく、システム上の全ての共有メモリ セグメントに関する情報を管理するカーネルの内部配列へのインデックス である。
+引き数は、セグメント識別子ではなく、システム上の全ての共有メモリー セグメントに関する情報を管理するカーネルの内部配列へのインデックス である。
.PP
-å\91¼ã\81³å\87ºã\81\97å\85\83ã\81¯ã\80\81\fIcmd\fP ã\81«ä»¥ä¸\8bã\81®å\80¤ã\82\92æ\8c\87å®\9aã\81\99ã\82\8bã\81\93ã\81¨ã\81§ã\80\81å\85±æ\9c\89ã\83¡ã\83¢ã\83ªã\83»セグメントが スワップされることを防止したり、許可したりできる:
+å\91¼ã\81³å\87ºã\81\97å\85\83ã\81¯ã\80\81\fIcmd\fP ã\81«ä»¥ä¸\8bã\81®å\80¤ã\82\92æ\8c\87å®\9aã\81\99ã\82\8bã\81\93ã\81¨ã\81§ã\80\81å\85±æ\9c\89ã\83¡ã\83¢ã\83ªã\83¼セグメントが スワップされることを防止したり、許可したりできる:
.br
.TP 10
\fBSHM_LOCK\fP (Linux 固有)
-å\85±æ\9c\89ã\83¡ã\83¢ã\83ªã\83»セグメントをスワップすることを防止する。 ロックが有効になった後、呼び出し元は、
+å\85±æ\9c\89ã\83¡ã\83¢ã\83ªã\83¼セグメントをスワップすることを防止する。 ロックが有効になった後、呼び出し元は、
存在することが要求された全てのページをフォールトさせなければならない。 セグメントがロックされると、 関連するデータ構造体において
\fIshm_perm.mode\fP フィールドの (標準的ではない) \fBSHM_LOCKED\fP フラグが設定される。 このデータ構造体は
\fBIPC_STAT\fP で取得される。
.TP
\fBSHM_UNLOCK\fP (Linux 固有)
-ã\82»ã\82°ã\83¡ã\83³ã\83\88ã\81®ã\83ã\83\83ã\82¯ã\82\92解é\99¤ã\81\97ã\80\81ã\82¹ã\83¯ã\83\83ã\83\97ã\83»ã\82¢ã\82¦ã\83\88ã\81\99ã\82\8bã\81\93ã\81¨ã\82\92å\8f¯è\83½ã\81«ã\81\99ã\82\8bã\80\82
+セグメントのロックを解除し、スワップアウトすることを可能にする。
.PP
.\" 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.
.\" in 2.6.10. MTK, May 2005
2.6.10 より前のカーネルでは、特権プロセスだけが \fBSHM_LOCK\fP と \fBSHM_UNLOCK\fP を利用することができた。 2.6.10
以降のカーネルでは、非特権プロセスであっても次の条件を満たせば これらの操作を利用することができる。その条件とは、プロセスの実効 UID
-がそのセグメントの所有者もしくは作成者の UID と一致し、 (\fBSHM_LOCK\fP の場合には) ロックするメモリの合計が
+ã\81\8cã\81\9dã\81®ã\82»ã\82°ã\83¡ã\83³ã\83\88ã\81®æ\89\80æ\9c\89è\80\85ã\82\82ã\81\97ã\81\8fã\81¯ä½\9cæ\88\90è\80\85ã\81® UID ã\81¨ä¸\80è\87´ã\81\97ã\80\81 (\fBSHM_LOCK\fP ã\81®å ´å\90\88ã\81«ã\81¯) ã\83ã\83\83ã\82¯ã\81\99ã\82\8bã\83¡ã\83¢ã\83ªã\83¼ã\81®å\90\88è¨\88ã\81\8c
\fBRLIMIT_MEMLOCK\fP リソース上限 (\fBsetrlimit\fP(2) 参照) の範囲内に入っていることである。
.SH 返り値
-\fBIPC_INFO\fP と \fBSHM_INFO\fP 操作は、成功すると、全ての共有メモリセグメントに関する情報を
-管ç\90\86ã\81\97ã\81¦ã\81\84ã\82\8bã\82«ã\83¼ã\83\8dã\83«ã\81®å\86\85é\83¨é\85\8då\88\97ã\81®ä½¿ç\94¨ä¸ã\82¨ã\83³ã\83\88ã\83ªã\81®ã\82¤ã\83³ã\83\87ã\83\83ã\82¯ã\82¹ã\81® ã\81\86ã\81¡æ\9c\80大å\80¤ã\82\92è¿\94ã\81\99 (ã\81\93ã\81®æ\83\85å ±ã\81¯ã\80\81ã\82·ã\82¹ã\83\86ã\83 ã\81®å\85¨ã\81¦ã\81®å\85±æ\9c\89ã\83¡ã\83¢ã\83ªセグメントに関する情報を
+\fBIPC_INFO\fP ã\81¨ \fBSHM_INFO\fP æ\93\8dä½\9cã\81¯ã\80\81æ\88\90å\8a\9fã\81\99ã\82\8bã\81¨ã\80\81å\85¨ã\81¦ã\81®å\85±æ\9c\89ã\83¡ã\83¢ã\83ªã\83¼ã\82»ã\82°ã\83¡ã\83³ã\83\88ã\81«é\96¢ã\81\99ã\82\8bæ\83\85å ±ã\82\92
+管ç\90\86ã\81\97ã\81¦ã\81\84ã\82\8bã\82«ã\83¼ã\83\8dã\83«ã\81®å\86\85é\83¨é\85\8då\88\97ã\81®ä½¿ç\94¨ä¸ã\82¨ã\83³ã\83\88ã\83ªã\83¼ã\81®ã\82¤ã\83³ã\83\87ã\83\83ã\82¯ã\82¹ã\81® ã\81\86ã\81¡æ\9c\80大å\80¤ã\82\92è¿\94ã\81\99 (ã\81\93ã\81®æ\83\85å ±ã\81¯ã\80\81ã\82·ã\82¹ã\83\86ã\83 ã\81®å\85¨ã\81¦ã\81®å\85±æ\9c\89ã\83¡ã\83¢ã\83ªã\83¼セグメントに関する情報を
取得するために、 \fBSHM_STAT\fP 操作を繰り返し実行する際に使用できる)。 \fBSHM_STAT\fP 操作は、成功すると、 \fIshmid\fP
-で指定されたインデックスを持つ共有メモリセグメントの識別子を返す。 他の操作は、成功の場合 0 を返す。
+ã\81§æ\8c\87å®\9aã\81\95ã\82\8cã\81\9fã\82¤ã\83³ã\83\87ã\83\83ã\82¯ã\82¹ã\82\92æ\8c\81ã\81¤å\85±æ\9c\89ã\83¡ã\83¢ã\83ªã\83¼ã\82»ã\82°ã\83¡ã\83³ã\83\88ã\81®è\98å\88¥å\90ã\82\92è¿\94ã\81\99ã\80\82 ä»\96ã\81®æ\93\8dä½\9cã\81¯ã\80\81æ\88\90å\8a\9fã\81®å ´å\90\88 0 ã\82\92è¿\94ã\81\99ã\80\82
エラーの場合は \-1 を返し、 \fIerrno\fP を適切に設定する。
.SH エラー
.TP
\fBENOMEM\fP
(2.6.9 以降のカーネルにおいて) \fBSHM_LOCK\fP が指定され、 ロックされる予定のセグメントのサイズ
-(ã\83ã\83\83ã\82¯ã\81\95ã\82\8cã\82\8bå\85±æ\9c\89ã\83¡ã\83¢ã\83ªã\83»セグメントの合計バイト数) が、 呼び出したプロセスの実ユーザー ID についての制限を超えた。 この制限は
+(ã\83ã\83\83ã\82¯ã\81\95ã\82\8cã\82\8bå\85±æ\9c\89ã\83¡ã\83¢ã\83ªã\83¼セグメントの合計バイト数) が、 呼び出したプロセスの実ユーザー ID についての制限を超えた。 この制限は
\fBRLIMIT_MEMLOCK\fP ソフト資源制限で定義される (\fBsetrlimit\fP(2) を参照)。
.TP
\fBEOVERFLOW\fP
.\" 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
+ã\81®ã\82¤ã\83³ã\82¯ã\83«ã\83¼ã\83\89ã\81¯å¿\85è¦\81ã\81ªã\81\84ã\80\82ã\81\97ã\81\8bã\81\97ã\81ªã\81\8cã\82\89ã\80\81ã\81\84ã\81\8fã\81¤ã\81\8bã\81®å\8f¤ã\81\84å®\9fè£\85ã\81§ã\81¯ã\81\93ã\82\8cã\82\89ã\81®ã\83\98ã\83\83ã\83\80ã\83¼ã\83\95ã\82¡ã\82¤ã\83«ã\81®ã\82¤ã\83³ã\82¯ã\83«ã\83¼ã\83\89ã\81\8cå¿\85è¦\81ã\81§ã\81\82ã\82\8aã\80\81 SVID
でもこれらのインクルードをするように記載されている。このような古いシステムへの移植性を意図したアプリケーションではこれらのファイルをインクルードする必要があるかもしれない。
\fBIPC_INFO\fP, \fBSHM_STAT\fP, \fBSHM_INFO\fP 操作は、 \fBipcs\fP(1)
プログラムで割り当て済の資源に関する情報を提供するために 使用されている。将来、これらの操作は変更されたり、 \fI/proc\fP
-ファイルシステムのインタフェースに移動されるかもしれない。
+ã\83\95ã\82¡ã\82¤ã\83«ã\82·ã\82¹ã\83\86ã\83 ã\81®ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ã\81«ç§»å\8b\95ã\81\95ã\82\8cã\82\8bã\81\8bã\82\82ã\81\97ã\82\8cã\81ªã\81\84ã\80\82
-Linux ã\81§ã\81¯ã\80\81 \fIshmctl(IPC_RMID)\fP ã\82\92使ã\81£ã\81¦ã\81\99ã\81§ã\81«å\89\8aé\99¤ã\83\9eã\83¼ã\82¯ã\81\8cã\81¤ã\81\91ã\82\89ã\82\8cã\81¦ã\81\84ã\82\8bå\85±æ\9c\89ã\83¡ã\83¢ã\83ªã\83»セグメントを あるプロセスが付加
+Linux ã\81§ã\81¯ã\80\81 \fIshmctl(IPC_RMID)\fP ã\82\92使ã\81£ã\81¦ã\81\99ã\81§ã\81«å\89\8aé\99¤ã\83\9eã\83¼ã\82¯ã\81\8cã\81¤ã\81\91ã\82\89ã\82\8cã\81¦ã\81\84ã\82\8bå\85±æ\9c\89ã\83¡ã\83¢ã\83ªã\83¼セグメントを あるプロセスが付加
(attach) (\fBshmat\fP(2)) することを許可している。 この機能は他の UNIX の実装では利用できない。
移植性を考慮したアプリケーションではこれに依存しないようにすべきである。
\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.76 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man\-pages/ に書かれている。