aboutsummaryrefslogtreecommitdiff
path: root/ja_JP.eucJP/man/man2/shmget.2
blob: 8f2ac4e033f87030cbf3c6f409a701721ac87d55 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
.\"
.\" Copyright (c) 1995 David Hovemeyer <daveho@infocom.com>
.\"
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/lib/libc/sys/shmget.2,v 1.6.2.2 1999/08/29 14:49:25 peter Exp %
.\"
.Dd July 3, 1995
.Dt SHMGET 2
.Os FreeBSD
.Sh 名称
.Nm shmget
.Nd 共有メモリの識別子の取得
.Sh 書式
.Fd #include <machine/param.h>
.Fd #include <sys/types.h>
.Fd #include <sys/ipc.h>
.Fd #include <sys/shm.h>
.Ft int
.Fn shmget "key_t key" "int size" "int flag"
.Sh 解説
.Fn shmget
は、
.Fa key
と
.Fa flag
の値に従って、新しく作成した、
または既存の共有メモリセグメントの識別子を戻します。
.\"
.\" The following bit about keys and modes also applies to semaphores
.\" and message queues.
.\"
キーはファイル名に似たもので、IPC オブジェクトを
指定するハンドルを提供するものです。
キーの指定方法には 3 つ方法があります。
.Bl -bullet
.It
IPC_PRIVATE を指定すると新しい IPC オブジェクトが作成されます。
.It
整定数を指定できます。
.Fa key
に対応する IPC オブジェクトが指定されておらず、IPC_CREAT ビットが
.Fa flag
で設定されている場合は、新しい IPC オブジェクトが作成されます。
.It 
.Fn ftok
を使用し、パス名からキーを作成できます。
.Xr ftok 3
を参照してください。
.El
.Pp
新しく作成された IPC オブジェクトのモードは、
.Fa flag
パラメータに渡す以下の定数の論理和で決まります。
.Bl -tag -width XSHMLWXX6XXX
.It Dv SHM_R
ユーザの読取りアクセス
.It SHM_W
ユーザの書込みアクセス
.It Dv (SHM_R>>3)
グループの読取りアクセス
.It Dv (SHM_W>>3)
グループの書込みアクセス
.It Dv (SHM_R>>6)
他者の読取りアクセス
.It Dv (SHM_W>>6)
他者の書込みアクセス
.El
.\"
.\" XXX - we should also mention how uid, euid, and gid affect ownership
.\"	  and use
.\"
.\" end section about keys and modes
.\"
.Pp
新しい共有メモリセグメントを作成する場合、
.Fa size
は、新しいセグメントのバイト単位のサイズを表わします。
セグメントのサイズは、カーネルに便利なように倍数に
切り上げられることがあります (ページサイズなど)。
.Sh 戻り値
処理が正常に完了すると、
.Fn shmget
は共有メモリセグメントの正整数の識別子を返します。
そうでない場合は -1 が返され、エラーを示すために
.Va errno
が設定されます。
.Sh エラー
以下の場合、
.Fn shmget
は処理を失敗します。
.Bl -tag -width Er
.\"
.\" XXX What about ipcperm failing?
.\"
.It Bq Er EINVAL
指定したサイズが、既存セグメントのサイズより大きいです。
指定したサイズが、システムの最低値より小さいか、最大値より大きいです。
.It Bq Er ENOENT
.Fa key
と一致する共有メモリセグメントがなく、IPC_CREAT が指定されていません。
.It Bq Er ENOSPC
要求を満たす十分なメモリを、カーネルが割り当てられません。
.It Bq Er EEXIST
IPC_CREAT と IPC_EXCL が指定され、
.Fa key
に対応する共有メモリセグメントがすでに存在します。
.Pp
.Sh 関連項目
.Xr shmat 2 ,
.Xr shmctl 2 ,
.Xr shmdt 2 , 
.Xr ftok 3