Go to the first, previous, next, last section, table of contents.


SysV IPC

共有メモリ使用状況を示す例です:

$IPC_PRIVATE = 0;
$IPC_RMID = 0;
$size = 2000;
$key = shmget($IPC_PRIVATE, $size , 0777 );
die if !defined($key);

$message = "Message #1";
shmwrite($key, $message, 0, 60 ) || die "$!";
shmread($key,$buff,0,60) || die "$!";

print $buff,"\n";

print "deleting $key\n";
shmctl($key ,$IPC_RMID, 0) || die "$!";

セマフォの例です:

$IPC_KEY = 1234;
$IPC_RMID = 0;
$IPC_CREATE = 0001000;
$key = semget($IPC_KEY, $nsems , 0666 | $IPC_CREATE );
die if !defined($key);
print "$key\n";

このコードを独立したファイルに納めて、少なくとも一つのプロセスで実行する ようにします。このファイルを `take' とします。(訳注: 意味が通じない ので想像を含めています。)

# セマフォの生成

$IPC_KEY = 1234;
$key = semget($IPC_KEY,  0 , 0 );
die if !defined($key);

$semnum = 0;
$semflag = 0;

# セマフォの「取得」'take'
# セマフォが 0 になるのを待つ
$semop = 0;
$opstring1 = pack("sss", $semnum, $semop, $semflag);

# セマフォのカウントをインクリメント
$semop = 1;
$opstring2 = pack("sss", $semnum, $semop,  $semflag);
$opstring = $opstring1 . $opstring2;

semop($key,$opstring) || die "$!";

このコードを独立したファイルに納めて、少なくとも一つのプロセスで実行する ようにします。このファイルを `give' とします。(訳注: 意味が通じない ので想像を含めています。)

# セマフォの「提供」'give'
# これを元のプロセスで実行すると、続くプロセスが、引き継
# ぎます。

$IPC_KEY = 1234;
$key = semget($IPC_KEY, 0, 0);
die if !defined($key);

$semnum = 0;
$semflag = 0;

# セマフォのカウントをデクリメント
$semop = -1;
$opstring = pack("sss", $semnum, $semop, $semflag);

semop($key,$opstring) || die "$!";


Go to the first, previous, next, last section, table of contents.

検索式: