//主函数 int main(void) { key_t key; int semid; char i; struct semid_ds buf; int value; printf("program running..\n"); key=ftok("/ipc/sem",'a');//creat key if(-1==key) { printf("ftok创建key失败\n"); //return ; } semid=CreateSem(key,100);//init value 100 for(i=0;i<=3;i++) { Sem_P(semid); //Sem_V(semid); } value=GetvalueSem(semid); printf("sem value is %d\n",value); //DestroySem(semid); return; }
int main(void) { key_t key; /*信号量的键值*/ int semid; /*信号量的ID*/ char i; int value = 0; key = ftok("/ipc/sem",'a'); /*建立信号量的键值*/ semid = CreateSem(key,100); /*建立信号量*/ for (i = 0;i <= 3;i++){ /*对信号量进行3次增减操作*/ Sem_P(semid); /*增加信号量*/ Sem_V(semid); /*减小信号量*/ } value = GetvalueSem(semid); /*获得信号量的值*/ printf("信号量值为:%d\n",value); /*打印结果*/ DestroySem(semid); /*销毁信号量*/ return 0; }