共有メモリ使用状況を示す例です:
$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.