2007年12月22日

セマフォロック解除(C++)

セマフォロック(C++)したものを解除します。


#include <stdio.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <string.h>

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

struct sembuf sembuff; // セマフォバッファ
memset(&sembuff,'\0',sizeof(sembuff));

try
{
/* セマフォキー値 OSで一意の値です */
long lnSemKey = 0x0000ffff;

errno=0;
int iSemId = semget(lnSemKey,1,(0666));
if(iSemId < 0)
{
throw -1;
}

errno=0;
if(semctl(iSemId,0,GETVAL,0) >= 1)
{
throw -2;
}
sembuff.sem_num = 0;
sembuff.sem_op = +1;
sembuff.sem_flg = SEM_UNDO;

errno=0;
while(semop(iSemId,&sembuff,1) < 0)
{
if(errno != EINTR)
{
throw -1;
}
}
}
catch(int r)
{
return(r);
}
return(0);


良かったらクリックお願いします→banner_01.gif
posted by 台北猫々 at 15:52| Comment(0) | TrackBack(0) | 技術メモ(Linux C/C++)
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/8680357

この記事へのトラックバック