

|
|
HOME >> アルファベットで関数を検索 >> semget
semget [SYSTEMV IPCのsemctl システムコールを実行し、共有メモリセグメントを取得する]
[関数の使い方・書式]
○ = semget ☆, ★, □
| ☆: |
(スカラー) |
キー値。 ・・・ セマフォの名前となる。あらかじめ取り決めておく。 |
| ★: |
(スカラー) |
セマフォの数。 ・・・ 生成するセマフォの数を指定。既存ID取得時は0で可。 |
| □: |
(スカラー) |
フラグ。 ・・・ 新規作成時はアクセス権限とパラメータの論理和。
アクセス権限の指定方法は UNIX のファイルシステムと同じ。 |
| ○: |
(スカラー) |
成功時はセマフォID。エラー時は偽(未定義値)を返します。 |
[関数の機能]
新しいセマフォを生成したり、存在するセマフォのセマフォIDを取得します。
キー値☆が &IPC_PRIVATE の場合、新しいセマフォが作成されます。
キー値はセマフォの名前と使用されます。
&IPC_CREAT をフラグ★にセットしても、新規にセマフォを作成することが出来ます。
この場合、新しいセマフォはキーにセットされた名前で生成され新しいIDが返されます。
但し、☆でセットしたキー値が既に存在していればそのセマフォのIDが返されます。
|
状況 |
戻り値 |
セットしたキー値 = 既存のセマフォのキー値、かつ
フラグ = 0
フラグ = アクセス権限|&IPC_CREAT
フラグ = アクセス権限|&IPC_CREAT|&IPC_EXCEL
|
既存のセマフォのセマフォID
既存のセマフォのセマフォID
未定義値 |
セットしたキー値 != 既存のセマフォのキー値、かつ
フラグ = 0
フラグ = アクセス権限|&IPC_CREAT
フラグ = アクセス権限|&IPC_CREAT|&IPC_EXCEL
|
未定義値
新しいセマフォのセマフォID
新しいセマフォのセマフォID |
キー値が &IPC_PRIVATE ではなく、フラグがセットされていない場合、キーの値に合致する名前のセマフォセットのIDが返されるかエラーとなります。
プラットフォームで SYSTEMV IPC がサポートされている必要があります。エラー発生時には、$! にエラーコードがセットされます。
[書式の例]
$id = semget($key, $nsems, $flags);
サンプルソース
require "sys/ipc.ph";
require "sys/msg.ph";
$| = 1;
$key = 0x123;
$id = semget($key, 1, 0666|&IPC_CREAT|&IPC_CEAT);
die "semget エラー:$!\n" if (! difined($id));
print "セマフォセットID: $id\n";
|